使用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 相关文章推荐
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
python实现百度语音识别api
Apr 10 Python
Python中的集合介绍
Jan 28 Python
pandas DataFrame创建方法的方式
Aug 02 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
关于tf.reverse_sequence()简述
Jan 20 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
python try...finally...的实现方法
Nov 25 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 self,$this,const,static,->的使用
2009/10/22 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
python raise的基本使用
2020/09/10 Python
《桂林山水》教学反思
2014/02/08 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
股东授权委托书范文
2014/09/13 职场文书
师德师风整改措施
2014/10/24 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
React自定义hook的方法
2022/06/25 Javascript