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 域名分析工具实现代码
Jul 15 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
python pyenv多版本管理工具的使用
Dec 23 Python
Python selenium爬取微博数据代码实例
May 22 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
Python批量将csv文件转化成xml文件的实例
May 10 Python
PyTorch 如何自动计算梯度
May 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
php类常量的使用详解
2013/06/08 PHP
php读取mysql的简单实例
2014/01/15 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
Javascript 入门基础学习
2010/03/10 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
python strip()函数 介绍
2013/05/24 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python WindowsError的错误代码详解
2017/07/23 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
北大自主招生自荐信
2013/10/19 职场文书
捐资助学倡议书
2014/04/15 职场文书
动物科学专业求职信
2014/07/27 职场文书
老人院义工活动感想
2015/08/07 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
 Python 中 logging 模块使用详情
2022/03/03 Python