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模块包中__init__.py文件功能分析
Jun 14 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
Selenium 配置启动项参数的方法
Dec 04 Python
如何在Python中创建二叉树
Mar 30 Python
python图片灰度化处理的几种方法
Jun 23 Python
Python 中 Shutil 模块详情
Nov 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通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
使用Apache的rewrite
2021/03/09 Servers
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Element input树型下拉框的实现代码
2018/12/21 Javascript
js实现随机点名
2021/01/19 Javascript
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
python操作excel的方法
2018/08/16 Python
python的re模块使用方法详解
2019/07/26 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
送货司机岗位职责
2013/12/11 职场文书
行政副总岗位职责
2014/02/23 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
促销活动总结怎么写
2014/06/25 职场文书
求职信的正确写法
2014/07/10 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
社区元宵节活动总结
2015/02/06 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS