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的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
python PrettyTable模块的安装与简单应用
Jan 11 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
python+mysql实现教务管理系统
Feb 20 Python
Python3.5集合及其常见运算实例详解
May 01 Python
python中Lambda表达式详解
Nov 20 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
python中元组的用法整理
Jun 15 Python
总结python 三种常见的内存泄漏场景
Nov 20 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中替换键名的简易方法示例详解
2014/01/07 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
js字符串转成JSON
2013/11/07 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
Python中的自省(反射)详解
2015/06/02 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python实现拼图小游戏
2020/02/22 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
幼儿园评语大全
2014/04/17 职场文书
一体化教学实施方案
2014/05/10 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript