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操作CouchDB的方法
Oct 08 Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
python3实现windows下同名进程监控
Jun 21 Python
把pandas转换int型为str型的方法
Jan 29 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
python打印异常信息的两种实现方式
Dec 24 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
Python学习之os包使用教程详解
Mar 21 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 adodb介绍
2009/03/19 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
Python手机号码归属地查询代码
2016/05/04 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
群众路线教育实践活动方案
2014/02/02 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
周年庆促销方案
2014/03/15 职场文书
大二学习计划书范文
2014/04/27 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
管理人员岗位职责
2015/02/14 职场文书
工资证明格式模板
2015/06/12 职场文书
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技