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 20 Python
Python的类实例属性访问规则探讨
Jan 30 Python
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python循环之while无限迭代
Apr 30 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
德生PL660的电路分析和打磨
2021/03/02 无线电
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
php字符串操作常见问题小结
2016/10/11 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
基于jQuery的倒计时实现代码
2012/05/30 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python机器人行走步数问题的解决
2018/01/29 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Python中的引用知识点总结
2019/05/20 Python
如何用python处理excel表格
2020/06/09 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
const和static readonly区别
2013/05/20 面试题
MySQL面试题目集锦
2016/04/14 面试题
新闻记者个人求职的自我评价
2013/11/28 职场文书
便利店促销方案
2014/02/20 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL