使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)


Posted in Python onApril 30, 2020

1.业务需求背景

业务提供一张底层图片1以及需要在底层图片上添加的图片2,两张图片大小不一致,将小图2添加到底图1中,并在其他的空白部分添加个性化的文本信息

2.图片处理逻辑

在底层图片上添加文本信息,图片另存到一个新的路径,命名为图3
将图3和图2合并,处理位置信息,透明率等,将处理完成之后的图片另存到新的路径,命名为图4

3.代码处理部分

3.1 图片上添加文本信息

from PIL import Image,ImageDraw,ImageFont
# 底图添加字体文本

im = Image.open("./底图.png").convert('RGBA')

# 查看原图的大小
print(im.mode,im.size) 
# 生成与原图大小完全一致的新图片,设定为完全透明
txt=Image.new('RGBA', im.size, (0,0,0,0)) 
# 设置字体,字号
fnt=ImageFont.truetype(r"C:\Windows\Fonts\STXINWEI.TTF", 50)
d=ImageDraw.Draw(txt)
# 拼接需要在图片上填写的文本
name = "李敏"
date_today = "2020-04-28"
a = """
  亲爱的{0}:
      叮。
      确认收货:专属生日祝福!
      快乐属于您,幸福属于您!
      温馨属于您,好运属于您!
      工作在忙碌,本能照顾您!
                
                \r\r\r\rXX部门
                \r\r\r\r{1}          
""".format(name,date_today)
# 设置字体信息所在的位置,写入的信息,颜色
d.text((txt.size[0]-950,txt.size[1]-1300),a,font=fnt,fill=(28,28,28,255))
# 保存新的图片
out=Image.alpha_composite(im,txt)
out.save(r"NEW-1.png")

3.2 两张大小不一致的图片重叠

import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
from PIL import Image,ImageDraw,ImageFont
# 读取两张图片信息
os.chdir('E:\RPA\生日贺卡')
bear = cv2.imread('./baiyang+gou.png')
sky = cv2.imread('./NEW-1.png')
"""
bear 小图
sky  大图
"""
# 根据小图像的大小,在大图像上创建感兴趣区域roi(放置位置任意取)
rows, cols = bear.shape[:2] #获取bear的高度、宽度
roi = sky[0:rows, 0:cols]

dst = cv2.addWeighted(bear,1,roi,0,0) #图像融合,设置透明度,大小等
add_img = sky.copy() #对原图像进行拷贝
add_img[800:rows+800, 75:cols+75] = dst # 将融合后的区域放进原图,可通过改数值修改位置
# 读取融合之后的图片数据(数据类型为dateframe对象)
ret = cv2.cvtColor(add_img,cv2.COLOR_BGR2RGB)

im = Image.fromarray(ret)
im.save("./完整图.png")
print("图片保存完成")

到此这篇关于使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)的文章就介绍到这了,更多相关Python合成图片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python小技巧之批量抓取美女图片
Jun 06 Python
Python去除字符串两端空格的方法
May 21 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
Python 数据结构之队列的实现
Jan 22 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
详解Python高阶函数
Aug 15 Python
python实现单机五子棋
Aug 28 Python
Python3实现英文字母转换哥特式字体实例代码
Sep 01 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 #Python
Pytorch高阶OP操作where,gather原理
Apr 30 #Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 #Python
Python闭包与装饰器原理及实例解析
Apr 30 #Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 #Python
Pycharm连接远程服务器过程图解
Apr 30 #Python
python3发送request请求及查看返回结果实例
Apr 30 #Python
You might like
PHP Socket 编程
2010/04/09 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
php实现评论回复删除功能
2017/05/23 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
python编程开发之日期操作实例分析
2015/11/13 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
电子商务个人自荐信
2013/12/12 职场文书
思想专业自荐信范文
2013/12/25 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
导师评语大全
2014/04/26 职场文书
询价采购方案
2014/06/09 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
医学生自荐信范文
2015/03/05 职场文书
排查MySQL生产环境索引没有效果
2022/04/11 MySQL