详解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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
python装饰器decorator介绍
Nov 21 Python
python实现ping的方法
Jul 06 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
如何基于python操作excel并获取内容
Dec 24 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
Django之腾讯云短信的实现
Jun 12 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 Python
使用Python拟合函数曲线
Apr 14 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代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
js文字滚动停顿效果代码
2008/06/28 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
layui表格实现代码
2017/05/20 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
python实现网站的模拟登录
2016/01/04 Python
Python交互式图形编程的实现
2019/07/25 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python selenium操作cookie的实现
2020/03/18 Python
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
工作时间调整通知
2015/04/24 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书