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 zip文件 压缩
Dec 24 Python
用Python代码来解图片迷宫的方法整理
Apr 02 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
基于python的Paxos算法实现
Jul 03 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
python 实现兔子生兔子示例
Nov 21 Python
Django数据库操作之save与update的使用
Apr 01 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 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中的串行化变量和序列化对象
2006/09/05 PHP
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
python机器学习实战之树回归详解
2017/12/20 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
校长四风对照检查材料
2014/09/27 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
吴仁宝观后感
2015/06/09 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技