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 相关文章推荐
Python多进程同步简单实现代码
Apr 27 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
Python面向对象编程基础解析(一)
Oct 26 Python
numpy排序与集合运算用法示例
Dec 15 Python
python如何求解两数的最大公约数
Sep 27 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
Python猴子补丁知识点总结
Jan 05 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
Python日志处理模块logging用法解析
May 19 Python
python定义类的简单用法
Jul 24 Python
浅析Python的命名空间与作用域
Nov 25 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生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
简述Python中的面向对象编程的概念
2015/04/27 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python编码爬坑指南(必看)
2016/06/10 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python进程间通信之共享内存详解
2017/10/30 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python制作动态字符图的实例
2019/01/27 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
优秀家长事迹材料
2014/05/17 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android