使用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彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
老生常谈Python startswith()函数与endswith函数
Sep 08 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
在python中使用xlrd获取合并单元格的方法
Dec 26 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
解决Django中多条件查询的问题
Jul 18 Python
python numpy中cumsum的用法详解
Oct 17 Python
celery在python爬虫中定时操作实例讲解
Nov 27 Python
selenium自动化测试入门实战
Dec 21 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
accesskey 提交
2006/06/26 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
纯JS实现轮播图
2017/02/22 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python梯度下降算法的实现
2020/02/24 Python
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
关于青春的演讲稿
2014/05/05 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
办护照工作证明
2014/10/01 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS