python使用pil库实现图片合成实例代码


Posted in Python onJanuary 20, 2018

本文研究的主要是python PIL实现图片合成的相关内容,具体介绍如下,分享实例代码。

在项目中需要将两张图片合在一起。遇到两种情况,一种就是两张非透明图片的合成, 一种是涉及到透明png的合成。

相关API见 http://pillow.readthedocs.io/en/latest/reference/Image.html

第一种情况,直接将两张图片合在一起就可以了。如下图所示,将两张图片合在一起

python使用pil库实现图片合成实例代码+python使用pil库实现图片合成实例代码=python使用pil库实现图片合成实例代码

详细代码

from PIL import Image
 #加载底图
 base_img = Image.open(ur'D:\Desktop\1.png')
 # 可以查看图片的size和mode,常见mode有RGB和RGBA,RGBA比RGB多了Alpha透明度
 # print base_img.size, base_img.mode
 box = (166, 64, 320, 337) # 底图上需要P掉的区域

 #加载需要P上去的图片
 tmp_img = Image.open(ur'D:\Desktop\2.png')
 #这里可以选择一块区域或者整张图片
 #region = tmp_img.crop((0,0,304,546)) #选择一块区域
 #或者使用整张图片
 region = tmp_img

 #使用 paste(region, box) 方法将图片粘贴到另一种图片上去.
 # 注意,region的大小必须和box的大小完全匹配。但是两张图片的mode可以不同,合并的时候回自动转化。如果需要保留透明度,则使用RGMA mode
 #提前将图片进行缩放,以适应box区域大小
 # region = region.rotate(180) #对图片进行旋转
 region = region.resize((box[2] - box[0], box[3] - box[1]))
 base_img.paste(region, box)
 #base_img.show() # 查看合成的图片
 base_img.save('./out.png') #保存图片

第一种情况时候规则的图片进行合并,比如矩形,难以对于任意形状的图片。对于任意形状的合并可以考虑使用透明的PNG来完成。

第二种情况,将非透明的图片放在底部,上面放一张局部透明的png图片,然后合成一张图片。

python使用pil库实现图片合成实例代码python使用pil库实现图片合成实例代码python使用pil库实现图片合成实例代码

代码

from PIL import Image
 #加载中间透明的手机图片
 base_img = Image.open(ur'D:\Desktop\3.png')
 #新建透明底图,大小和手机图一样,mode使用RGBA,保留Alpha透明度,颜色为透明
 #Image.new(mode, size, color=0),color可以用tuple表示,分别表示RGBA的值
 target = Image.new('RGBA', base_img.size, (0, 0, 0, 0))
 box = (166, 64, 320, 337) #区域
 # 加载需要狐狸像
 region = Image.open(ur'D:\Desktop\4.png')
 region = region.rotate(180) #旋转180度
 #确保图片是RGBA格式,大小和box区域一样
 region = region.convert("RGBA")
 region = region.resize((box[2] - box[0], box[3] - box[1]))
 #先将狐狸像合成到底图上
 target.paste(region,box)
 #将手机图覆盖上去,中间透明区域将狐狸像显示出来。
 target.paste(base_img,(0,0),base_img) #第一个参数表示需要粘贴的图像,中间的是坐标,最后是一个是mask图片,用于指定透明区域,将底图显示出来。
 # target.show()
 target.save('./out.png') # 保存图片

总结

以上就是本文关于python PIL实现图片合成实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
Python引用模块和查找模块路径
Mar 17 Python
python随机取list中的元素方法
Apr 08 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
python爬虫容易学吗
Jun 02 Python
Python实现上下文管理器的方法
Aug 07 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python方向键控制上下左右代码
Jan 20 #Python
Python线程创建和终止实例代码
Jan 20 #Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 #Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 #Python
浅谈flask中的before_request与after_request
Jan 20 #Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 #Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 #Python
You might like
PHP生成唯一订单号
2015/07/05 PHP
PHP图片加水印实现方法
2016/05/06 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
Python 去除字符串中指定字符串
2020/03/05 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
python实现数字炸弹游戏
2020/07/17 Python
详解python程序中的多任务
2020/09/16 Python
小结Python的反射机制
2020/09/28 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
C语言面试题
2015/10/30 面试题
校园达人秀策划书
2014/01/12 职场文书
感谢信范文大全
2015/01/23 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
律师催款函范文
2015/06/24 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL