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编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
python模块之re正则表达式详解
Feb 03 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
Jun 11 Python
Python 互换字典的键值对实例
Feb 12 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
Python3实现飞机大战游戏
Apr 24 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
python中doctest库实例用法
Dec 31 Python
教你利用python实现企业微信发送消息
May 23 Python
Python实现拼音转换
Jun 07 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
PHP 高手之路(二)
2006/10/09 PHP
php db类库进行数据库操作
2009/03/19 PHP
php开发文档 会员收费1期
2012/08/14 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
JavaScript 乱码问题
2009/08/06 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
windows系统下Python环境搭建教程
2017/03/28 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python实现Dijkstra算法
2018/10/17 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
django ajax发送post请求的两种方法
2020/01/05 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
Python对excel的基本操作方法
2021/02/18 Python
美国家具网站:Cymax
2016/09/17 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
外语专业毕业生个人的自荐信
2013/11/19 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
跳高加油稿
2015/07/21 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
python神经网络 使用Keras构建RNN训练
2022/05/04 Python