详解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 自动安装 Rising 杀毒软件
Apr 24 Python
从零学python系列之数据处理编程实例(一)
May 22 Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
深入解析神经网络从原理到实现
Jul 26 Python
详解python itertools功能
Feb 07 Python
Jupyter加载文件的实现方法
Apr 14 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
Python实现验证码识别
Jun 15 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 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概述.
2006/10/09 PHP
php mysql索引问题
2008/06/07 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
删除节点的jquery代码
2014/01/13 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
python字符串连接的N种方式总结
2014/09/17 Python
python开发之for循环操作实例详解
2015/11/12 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python 查看文件的编码格式方法
2017/12/21 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
python创建子类的方法分析
2019/11/28 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python3中编码获取网页的实例方法
2020/11/16 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
中学生自我评价范文
2014/02/08 职场文书
体现团队精神的口号
2014/06/06 职场文书
个人查摆剖析材料
2014/10/16 职场文书
授权委托书
2015/01/28 职场文书
个人年终总结开头
2015/03/06 职场文书
Python道路车道线检测的实现
2021/06/27 Python