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  __getattr__与__setattr__使用方法
Sep 06 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
解决Python对齐文本字符串问题
Aug 28 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
虚拟机下载python是否需要联网
Jul 27 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
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
PHP三元运算符的结合性介绍
2012/01/10 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
Django中create和save方法的不同
2019/08/13 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
详解python 内存优化
2020/08/17 Python
python中封包建立过程实例
2021/02/18 Python
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
个人授权委托书模板
2014/09/14 职场文书
思想政治表现评语
2015/01/04 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
Golang流模式之grpc的四种数据流
2022/04/13 Golang