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实现简单的计时器功能函数
Mar 14 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python实现图书借阅系统
Feb 20 Python
由面试题加深对Django的认识理解
Jul 19 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
Python发送邮件封装实现过程详解
May 09 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
Python实现自动整理文件的脚本
Dec 17 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
第七节--类的静态成员
2006/11/16 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python 功能和特点(新手必学)
2015/12/30 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
通过cmd进入python的步骤
2020/06/16 Python
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
美容院管理规章制度
2015/08/05 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
python基础之文件处理知识总结
2021/05/23 Python
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python