使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
作者:徐凯K 时间:2022-03-17 20:04:01
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("图片保存完成")
来源:https://www.cnblogs.com/xukaik/archive/2020/04/30/12807306.html
标签:Python,合成图片
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python selenium文件上传方法汇总
2022-12-01 04:47:29
django-rest-framework 自定义swagger过程详解
2023-01-01 22:05:34
![](https://img.aspxhome.com/file/2023/4/72214_0s.png)
asp如何让服务器延时执行更改后的数据?
2010-05-13 16:35:00
一个oracle指令的好网站
2010-07-21 13:31:00
python3.7将代码打包成exe程序并添加图标的方法
2021-01-17 08:29:32
![](https://img.aspxhome.com/file/2023/6/67286_0s.png)
ORACLE常用数值函数、转换函数、字符串函数
2009-11-21 09:31:00
Django实现简单网页弹出警告代码
2022-12-31 06:56:16
Python PyQt5实战项目之查询器的实现流程详解
2023-07-15 04:19:21
![](https://img.aspxhome.com/file/2023/8/78758_0s.png)
js+asp总结
2009-11-16 17:49:00
Go 字符串格式化的实例代码详解
2023-08-05 14:05:30
在python中利用GDAL对tif文件进行读写的方法
2022-03-25 08:08:07
discuz 2.0整合asp系统,用户添加函数
2011-04-02 11:08:00
详谈Python中列表list,元祖tuple和numpy中的array区别
2021-02-04 12:14:28
美之鉴 – 女人与Web设计
2009-12-09 15:36:00
![](https://img.aspxhome.com/file/UploadPic/200912/9/web_and_beauty-36s.jpg)
SQL Server中选出指定范围行的SQL语句写法
2008-12-09 15:04:00
Gradio机器学习模型快速部署工具应用分享
2023-06-30 01:33:33
![](https://img.aspxhome.com/file/2023/6/62846_0s.jpg)
Yahoo!网站性能最佳体验的34条黄金守则——JavaScript和CSS
2008-05-29 13:34:00
完美的渐变透明效果,支持Firefox
2008-06-18 18:18:00
php写入mysql中文乱码的实例解决方法
2023-10-10 01:36:49
python求列表交集的方法汇总
2023-03-01 10:32:40