详解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使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
Python字符串切片操作知识详解
Mar 28 Python
最大K个数问题的Python版解法总结
Jun 16 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
Python shelve模块实现解析
Aug 28 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
python和php学习哪个更有发展
Jun 17 Python
python编写函数注意事项总结
Mar 29 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
mysql数据库差异比较的PHP代码
2012/02/05 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
js制作提示框插件
2020/12/24 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
ajax是什么及其工作原理
2012/02/08 面试题
学院领导推荐信
2013/10/30 职场文书
如何掌握自荐信格式呢
2013/11/19 职场文书
元旦促销方案
2014/03/15 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
任长霞观后感
2015/06/16 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers