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运用于数据分析的简单教程
Mar 27 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
python列表的逆序遍历实现
Apr 20 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
python3 字符串str和bytes相互转换
Mar 23 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php 定义404页面的实现代码
2012/11/19 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
python实现学员管理系统
2019/02/26 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
Pytorch释放显存占用方式
2020/01/13 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
python支持多继承吗
2020/06/19 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
促销活动方案模板
2014/02/24 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
初中信息技术教学计划
2015/01/22 职场文书
2015年招生工作总结
2015/05/04 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
python基础之匿名函数详解
2021/04/21 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
Java spring单点登录系统
2021/09/04 Java/Android
golang使用map实现去除重复数组
2022/04/14 Golang