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 13 Python
python益智游戏计算汉诺塔问题示例
Mar 05 Python
python操作CouchDB的方法
Oct 08 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
Python脚本实现格式化css文件
Apr 08 Python
python基础教程之五种数据类型详解
Jan 12 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
使用pip安装python库的多种方式
Jul 31 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
Python爬虫之Selenium实现窗口截图
Dec 04 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
Linux下多个Python版本安装教程
2018/08/15 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
软件测试专业推荐信
2014/09/18 职场文书
用电申请报告范文
2015/05/18 职场文书
春节晚会开场白
2015/05/29 职场文书