详解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字符编码判断方法分析
Jul 01 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
如何高效使用Python字典的方法详解
Aug 31 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
Django视图类型总结
Feb 17 Python
Python实现批量自动整理文件
Mar 16 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
理解JavaScript原型链
2016/10/25 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
JS canvas实现画板和签字板功能
2021/02/23 Javascript
python 多线程应用介绍
2012/12/19 Python
Python中join和split用法实例
2015/04/14 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
单位人事专员介绍信
2014/01/11 职场文书
活动总结怎么写啊
2014/05/07 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
MySQL优化之慢日志查询
2022/06/10 MySQL