使用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中bisect模块用法实例
Sep 25 Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
Python函数返回值实例分析
Jun 08 Python
Python时间获取及转换知识汇总
Jan 11 Python
python实现BackPropagation算法
Dec 14 Python
python实现kMeans算法
Dec 21 Python
python使用Matplotlib画条形图
Mar 25 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
python 动态调用函数实例解析
Oct 21 Python
python  logging日志打印过程解析
Oct 22 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 Python
通过代码简单了解django model序列化作用
Nov 12 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简单提示框alert封装函数
2010/08/08 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php简单smarty入门程序实例
2015/06/11 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
改进Django中的表单的简单方法
2015/07/17 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
10个示例带你掌握python中的元组
2020/11/23 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
企事业单位求职者的自我评价
2013/12/28 职场文书
打架检讨书50字
2014/01/11 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
南京导游词
2015/02/03 职场文书
心理健康教育主题班会
2015/08/13 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python