使用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获取文件ssdeep值的方法
Oct 05 Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
python获取交互式ssh shell的方法
Feb 14 Python
基于python中__add__函数的用法
Nov 25 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
详解Python自动化之文件自动化处理
Jun 21 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP EOT定界符的使用详解
2008/09/30 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
线程和进程的区别及Python代码实例
2015/02/04 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
高中生自我评语大全
2014/01/19 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL