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使用cookielib库示例分享
Mar 03 Python
在Docker上部署Python的Flask框架的教程
Apr 08 Python
python方向键控制上下左右代码
Jan 20 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
python实现Flappy Bird源码
Dec 24 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
python 求两个向量的顺时针夹角操作
Mar 04 Python
pytorch 如何使用amp进行混合精度训练
May 24 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的引用原因分析
2012/09/06 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
Python re模块介绍
2014/11/30 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
python format 格式化输出方法
2018/07/16 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
力学专业毕业生自荐信
2013/11/17 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
会计工作总结范文2014
2014/12/23 职场文书
计划生育目标责任书
2015/05/09 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
七年级作文之环保作文
2019/10/17 职场文书