Python编程图形库之Pillow使用方法讲解


Posted in Python onDecember 28, 2018

PIL vs Pillow

PIL: Python Imaging Library,是python的图像处理库。由于PIL不兼容setuptools,再加上更新缓慢等因素,Alex Clark等一些社区好心人还是希望能够继续支持PIL,所以fork了PIL,这就是Pillow的缘起。

Pillow的目标

推动和促进PIL的发展是Pillow的目标,主要通过如下的方式来进行

  • 结合Travis CI和AppVeyor进行持续集成测试
  • 活用github进行开发
  • 结合Python Package Index进行例行发布

其实可以看出,所做的改善就是在CI和CD,改善用户感知,定期/快速地与使用者进行沟通和交流,是pillow获得好感的一个重要因素。

安装

安装可以通过pip,只需要执行pip install pillow即可

liumiaocn:~ liumiao$ pip install pillow
Collecting pillow
 Downloading https://files.pythonhosted.org/packages/df/aa/a25f211a4686f363d8ca5a1752c43a8f42459e70af13e20713d3e636f0af/Pillow-5.1.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.6MB)
  100% |????????????????????????????????| 3.6MB 157kB/s 
Installing collected packages: pillow
Successfully installed pillow-5.1.0
liumiaocn:~ liumiao$

安装确认

liumiaocn:~ liumiao$ pip show pillow
Name: Pillow
Version: 5.1.0
Summary: Python Imaging Library (Fork)
Home-page: https://python-pillow.org
Author: Alex Clark (Fork Author)
Author-email: aclark@aclark.net
License: Standard PIL License
Location: /usr/local/lib/python2.7/site-packages
Requires: 
Required-by: 
liumiaocn:~ liumiao$

使用

图形库有很多实用的功能,这里列举几个进行简单演示。

ImageGrab.grab()

使用这个方法可以实现抓屏:

liumiaocn:tmp liumiao$ cat grab.python 
#!/usr/local/bin/python
from PIL import ImageGrab
#get current screen copy
image = ImageGrab.grab()
#display image size
print("Current screen shot size :",image.size)
#display image mode
print("Screen shot picture mode :", image.mode)
#save picture to /tmp/screen-grab-1.bmp
image.save('/tmp/screen-grab-1.bmp')
#show picture
image.show()
liumiaocn:tmp liumiao$

因为代码中使用了image.show()进行了显示,执行之后可以直接看到显示,同时也能确认到/tmp下所生成的文件

liumiaocn:tmp liumiao$ python grab.python 
('Current screen shot size :', (2880, 1800))
('Screen shot picture mode :', 'RGBA')
liumiaocn:tmp liumiao$ ls -l /tmp/screen-grab-1.bmp
-rw-r--r-- 1 liumiao wheel 20736054 Jun 23 05:41 /tmp/screen-grab-1.bmp
liumiaocn:tmp liumiao$

Python编程图形库之Pillow使用方法讲解

滤镜

PIL中的ImageFilter支持近十种滤镜, 比如对刚刚抓取的图片使用CONTOUR滤镜

liumiaocn:tmp liumiao$ cat filter-contour.py 
#!/usr/local/bin/python
from PIL import ImageFilter, Image
src_image = Image.open('/tmp/screen-grab-1.bmp')
print("begin to filter the pic")
dst_image = src_image.filter(ImageFilter.CONTOUR)
print("picture through filter")
dst_image.show()
liumiaocn:tmp liumiao$

执行之后可以得到如下图片

Python编程图形库之Pillow使用方法讲解

旋转

使用rotate即可对图片进行旋转操作:

liumiaocn:tmp liumiao$ cat rotate.py 
#!/usr/local/bin/python
from PIL import Image
src_image = Image.open('/tmp/screen-grab-1.bmp')
print("begin to rotate the pic")
dst_image = src_image.rotate(90)
print("picture after rotating")
dst_image.show()
liumiaocn:tmp liumiao$

执行之后,即可确认

Python编程图形库之Pillow使用方法讲解

Pillow功能非常之多,而且使用也很方便,比如resize对尺寸进行调节,还可以添加文字等等常见的图形处理操作,这里就不再一一介绍,具体的需要可以参看如下链接进行了解:https://pypi.org/project/Pillow/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
基于python编写的微博应用
Oct 17 Python
Python挑选文件夹里宽大于300图片的方法
Mar 05 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
使用Python操作excel文件的实例代码
Oct 15 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
如何使用python把ppt转换成pdf
Jun 29 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
Python netmiko模块的使用
Feb 14 Python
python自动生成证件号的方法示例
Jan 14 Python
Python中zipfile压缩包模块的使用
May 14 Python
对python中大文件的导入与导出方法详解
Dec 28 #Python
Python编程深度学习计算库之numpy
Dec 28 #Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 #Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 #Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 #Python
Python编程深度学习绘图库之matplotlib
Dec 28 #Python
对pandas写入读取h5文件的方法详解
Dec 28 #Python
You might like
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
PHP7匿名类用法分析
2016/09/26 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
ionic3 懒加载
2017/08/16 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
Python字节单位转换实例
2019/12/05 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
python实现KNN近邻算法
2020/12/30 Python
python中@contextmanager实例用法
2021/02/07 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
linux下进程间通信的方式
2013/01/23 面试题
中文系学生自荐信范文
2013/11/13 职场文书
英语生日邀请函
2014/01/23 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
中层干部培训方案
2014/06/16 职场文书
毕业生面试求职信
2014/06/23 职场文书
励志演讲稿500字
2014/08/21 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
交通事故被告答辩状
2015/05/22 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android