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实现从url中提取域名的几种方法
Sep 26 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
python实现的生成word文档功能示例
Aug 23 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
Python数据存储之 h5py详解
Dec 26 Python
基于Python脚本实现邮件报警功能
May 20 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
在python3.9下如何安装scrapy的方法
Feb 03 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
Javascript实现的分页函数
2007/02/07 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python实现桌面气泡提示功能
2019/07/29 Python
Django中提示消息messages的设置方式
2019/11/15 Python
wxpython绘制圆角窗体
2019/11/18 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
硕士研究生个人求职信
2013/12/04 职场文书
英文求职信写作小建议
2014/02/16 职场文书
工程负责人任命书
2014/06/06 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
房屋转让协议书
2014/10/18 职场文书
大学生求职自荐信
2015/03/24 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
在js中修改html body的样式
2021/11/11 Javascript
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS