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 相关文章推荐
Hadoop中的Python框架的使用指南
Apr 22 Python
在Python下尝试多线程编程
Apr 28 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
python实现k-means聚类算法
Feb 23 Python
django富文本编辑器的实现示例
Apr 10 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
详解Matplotlib绘图之属性设置
Aug 23 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Python 中@property的用法详解
Jan 15 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
解决Pytorch半精度浮点型网络训练的问题
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中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
基于empty函数的判断详解
2013/06/17 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
php上传文件问题汇总
2015/01/30 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
jQuery前台数据获取实现代码
2011/03/16 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Python常见异常分类与处理方法
2017/06/04 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Python requests接口测试实现代码
2020/09/08 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
汉语言文学专业自荐信
2014/06/11 职场文书
四风问题对照检查材料
2014/09/22 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
庆七一活动简报
2015/07/20 职场文书