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备份文件以及mysql数据库的脚本代码
Jun 10 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
Python中单、双下划线的区别总结
Dec 01 Python
pandas中去除指定字符的实例
May 18 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
通过cmd进入python的步骤
Jun 16 Python
深入理解Python 多线程
Jun 16 Python
python UDF 实现对csv批量md5加密操作
Jan 01 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新手上路(八)
2006/10/09 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
javascript学习网址备忘
2007/05/29 Javascript
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
对于Python深浅拷贝的理解
2019/07/29 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
入党自我鉴定范文
2013/10/04 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
见习报告的格式
2014/11/04 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
电影雨中的树观后感
2015/06/15 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
linux目录管理方法介绍
2022/06/01 Servers