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实现一个音乐检索器的功能
Nov 15 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
pandas to_excel 添加颜色操作
Jul 14 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
Python中基础数据类型 set集合知识点总结
Aug 02 Python
python 进阶学习之python装饰器小结
Sep 04 Python
Python OpenCV形态学运算示例详解
Apr 07 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设计模式之观察者模式实例
2016/02/22 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Python docx库用法示例分析
2019/02/16 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
python实现双人五子棋(终端版)
2020/12/30 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
物流司机岗位职责
2013/12/28 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
Python+Appium新手教程
2021/04/17 Python