详解Python图像处理库Pillow常用使用方法


Posted in Python onSeptember 02, 2019

 PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。

其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持python3。

PIL(Python Imaging Library)是Python一个强大方便的图像处理库,只支持到Python2.7。

Pillow是PIL的一个派生分支,在Python3标准库中用Pillow代替PIL。

Pillow官网:https://pillow.readthedocs.io/en/latest/handbook/index.html

下面是使用例子,用法可见代码注释。

from PIL import Image,ImageFilter,ImageGrab,ImageDraw,ImageFont
# 创建图片:宽800*高600,红色
imNew = Image.new('RGB',(800,600),(255,0,0))
# 显示图片
#imNew.show()
# 抓取屏幕
imGrab = ImageGrab.grab()
imGrab.save('grab.jpg', 'jpeg')
# 打开图片
im = Image.open('1.jpg')
# 复制图片
im1 = im.copy()
im2 = im.copy()
im3 = im.copy()
im4 = im.copy()
im5 = im.copy()
im6 = im.copy()
im7 = im.copy()
# 获得图片宽高:
w, h = im.size
print('图片宽高:{} * {}'.format(w, h))
# 缩略图(图片不会被拉伸,只能缩小)
im.thumbnail((w//2, h//2))
im.save('1_thumbnail.jpg', 'jpeg')
# 缩放(图片可能会被拉伸,可缩小也可放大)
im1 = im1.resize((w//2, h//2))
im1.save('1_resize.jpg', 'jpeg')
# 模糊图片
im2 = im2.filter(ImageFilter.BLUR)
im2.save('1_blur.jpg', 'jpeg')
# 旋转图片,逆时钟旋转45度
im3 = im3.rotate(45)
im3.save('1_rotate.jpg', 'jpeg')
# 图片转换:左右转换 FLIP_LEFT_RIGHT,上下转换 FLIP_TOP_BOTTOM
im4 = im4.transpose(Image.FLIP_LEFT_RIGHT)
im4.save('1_transpose.jpg', 'jpeg')
# 图片裁剪
box = (200,200,400,400) #左上角(0,0),4元组表示坐标位置:左、上、右、下
im5 = im5.crop(box)
im5.save('1_crop.jpg', 'jpeg')
# 图片上添加文字
draw = ImageDraw.Draw(im6)
#truetype设置字体、文字大小
#stxingka.ttf华文行楷 simkai.ttf 楷体 simli.ttf 隶书
font = ImageFont.truetype("C:\\WINDOWS\\Fonts\\stxingka.ttf", 20) 
draw.text((100,100), ('hello word \n你好,世界'), fill='#0000ff', font=font)
im6.save('1_drawText.jpg', 'jpeg')
# 图片上添加图片(粘贴图片)
imTmp = Image.new('RGB',(30,30),'blue')
im7.paste(imTmp, (50,50)) #第2个参数为坐标
im7.save('1_paste.jpg','jpeg')
# 图片横向拼接:拼接上面im6、im7(两张图片大小一样)
im6Width, im6Height = im6.size
imHorizontal = Image.new('RGB', (im6Width * 2, im6Height))
imHorizontal.paste(im6, (0,0))
imHorizontal.paste(im7, (im6Width,0))
imHorizontal.save('1_horizontal.jpg', 'jpeg')
# 图片竖向拼接:拼接上面im6、im7
imVertical = Image.new('RGB', (im6Width, im6Height*2))
imVertical.paste(im6, (0,0))
imVertical.paste(im7, (0,im6Height))
imVertical.save('1_vertical.jpg', 'jpeg')

总结

以上所述是小编给大家介绍的Python图像处理库Pillow常用使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
浅谈Python的垃圾回收机制
Dec 17 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
Python画图高斯分布的示例
Jul 10 Python
tensorflow保持每次训练结果一致的简单实现
Feb 17 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
Django使用中间件解决前后端同源策略问题
Sep 02 #Python
python elasticsearch环境搭建详解
Sep 02 #Python
关于pymysql模块的使用以及代码详解
Sep 01 #Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 #Python
Python 使用多属性来进行排序
Sep 01 #Python
详解一种用django_cache实现分布式锁的方式
Sep 01 #Python
python实现多进程通信实例分析
Sep 01 #Python
You might like
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
javascript实现密码验证
2015/11/10 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
不要用强制方法杀掉python线程
2017/02/26 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
python高级特性简介
2020/08/13 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
golang中的struct操作
2021/11/11 Golang