使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
1.业务需求背景
业务提供一张底层图片1以及需要在底层图片上添加的图片2,两张图片大小不一致,将小图2添加到底图1中,并在其他的空白部分添加个性化的文本信息
2.图片处理逻辑
在底层图片上添加文本信息,图片另存到一个新的路径,命名为图3
将图3和图2合并,处理位置信息,透明率等,将处理完成之后的图片另存到新的路径,命名为图4
3.代码处理部分
3.1图片上添加文本信息
fromPILimportImage,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两张大小不一致的图片重叠
importcv2
importnumpyasnp
importmatplotlib.pyplotasplt
importos
fromPILimportImage,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合成图片内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!