> PIL(Python Imaging Library)是Python提供的图片处理库。该库支持生成缩略图、转换图片格式、生成保存图片,支持对图片的像素点操作、滤镜、颜色处理,同时支持对图片的自定义大小、旋转和任意的仿射变换等。。。功能非常强大!
* * *
PIL在Mac上的安装参考文章[Mac OS X安装 Scrapy、PIL、BeautifulSoup](http://www.jianshu.com/p/5265b76026d9)
* * *
##### 打开图片
~~~
import Image
image = Image.open("image.png")
print image.format, image.size, image.mode
~~~
![](https://box.kancloud.cn/2016-05-29_574a961e69f08.jpg)
##### 展示图片
~~~
image.show()
~~~
##### 图片格式转换
~~~
import os, sys
image Image
#...
image.save('image.jpg')
~~~
##### 缩略图
图片缩小为原图的四分之一
~~~
import os, sys
image Image
#...
width = image.size[0]
height = image.size[1]
size = width / 4, height / 4
image.thumbnail(size)
image.save('image_thumbnail.png')
~~~
##### 裁剪粘贴
~~~
box = (0, 0, width, height / 2)
imageCut = image.crop(box).transpose(Image.ROTATE_180)
image.paste(imageCut, box)
image.show()
~~~
注意`box`的四个参数的意义与一般理解不同,第一个与第二个参数可视为左上角坐标(0, 0),第三个与第四个参数可视为右下角坐标(width, height / 2),所以这里我们截取的区域是图片的上半部分。
`crop(box)`方法执行截图操作,`transpose(Image.ROTATE_180)`顾名思义,是将截取的图片旋转180度。
`paste(imageCut, box)`图片的粘贴,第一个参数`imageCut`是要粘贴的图片,第二个参数`box`是粘贴在哪个位置。需要注意的是两个参数的 大小必须相同。
![](https://box.kancloud.cn/2016-05-29_574a961e7ede2.jpg)
原图
![](https://box.kancloud.cn/2016-05-29_574a961e9cc53.jpg)
操作后
##### 分离与合并通道
~~~
r, g, b = image.split()
r.show()
g.show()
b.show()
image = Image.merge("RGB", (b, g, r))
image.show()
~~~
分离RGB通道,并分别展示。`Image.merge("RGB", (b, g, r))`是将图片的RB通道互换。
##### 简单的几何变换
~~~
image.resize((300, 500)).show()
image.rotate(15).show()
image.transpose(Image.FLIP_LEFT_RIGHT).show()
~~~
说一下第三个方法`transpose(...)`,例子中的参数`Image.FLIP_LEFT_RIGHT`表示左右旋转,还有代表其他意义的参数:
`FLIP_LEFT_RIGHT` :左右旋转
`FLIP_TOP_BOTTOM` :上下旋转
`ROTATE_90` :旋转90度
`ROTATE_180` :旋转180度
`ROTATE_270` :旋转270度
##### 滤镜 ImageFilter
哇哦,这个功能是最让人期待的,不过很可惜,因为PIL只提供了10种滤镜效果。
使用时注意引入`ImageFilter`
~~~
import ImageFilter
#...
image.filter(ImageFilter.BLUR).show()
~~~
所有的滤镜是
`ImageFilter.BLUR` 模糊
`ImageFilter.CONTOUR` 轮廓
`ImageFilter.DETAIL` 细节
`ImageFilter.EDGE_ENHANCE` 边界加强
`ImageFilter.EDGE_ENHANCE_MORE` 边界加强(阀值更大)
`ImageFilter.EMBOSS` 浮雕
`ImageFilter.FIND_EDGES` 边界
`ImageFilter.SMOOTH` 平滑
`ImageFilter.SMOOTH_MORE` 平滑(阀值更大)
`ImageFilter.SHARPEN` 锐化
来看一下效果:
![](https://box.kancloud.cn/2016-05-29_574a961ec1bf4.jpg)
原图
![](https://box.kancloud.cn/2016-05-29_574a961f0b423.jpg)
ImageFilter.BLUR 模糊
![](https://box.kancloud.cn/2016-05-29_574a961f351ba.jpg)
ImageFilter.CONTOUR 轮廓
![](https://box.kancloud.cn/2016-05-29_574a961f653ee.jpg)
ImageFilter.DETAIL 细节
![](https://box.kancloud.cn/2016-05-29_574a961f9a782.jpg)
ImageFilter.EDGE_ENHANCE 边界加强
![](https://box.kancloud.cn/2016-05-29_574a961fde1aa.jpg)
ImageFilter.EDGE_ENHANCE_MORE 边界加强(阀值更大)
![](https://box.kancloud.cn/2016-05-29_574a96201e41d.jpg)
ImageFilter.EMBOSS 浮雕
![](https://box.kancloud.cn/2016-05-29_574a962058739.jpg)
ImageFilter.FIND_EDGES 边界
![](https://box.kancloud.cn/2016-05-29_574a9620a1e8e.jpg)
ImageFilter.SMOOTH 平滑
![](https://box.kancloud.cn/2016-05-29_574a9620d8969.jpg)
ImageFilter.SMOOTH_MORE 平滑(阀值更大)
![](https://box.kancloud.cn/2016-05-29_574a962118e21.jpg)
ImageFilter.SHARPEN 锐化
* * *
PIL的官方文档在 [这里](http://effbot.org/imagingbook/overview.htm)
- Python爬虫入门
- (1):综述
- (2):爬虫基础了解
- (3):Urllib库的基本使用
- (4):Urllib库的高级用法
- (5):URLError异常处理
- (6):Cookie的使用
- (7):正则表达式
- (8):Beautiful Soup的用法
- Python爬虫进阶
- Python爬虫进阶一之爬虫框架概述
- Python爬虫进阶二之PySpider框架安装配置
- Python爬虫进阶三之Scrapy框架安装配置
- Python爬虫进阶四之PySpider的用法
- Python爬虫实战
- Python爬虫实战(1):爬取糗事百科段子
- Python爬虫实战(2):百度贴吧帖子
- Python爬虫实战(3):计算大学本学期绩点
- Python爬虫实战(4):模拟登录淘宝并获取所有订单
- Python爬虫实战(5):抓取淘宝MM照片
- Python爬虫实战(6):抓取爱问知识人问题并保存至数据库
- Python爬虫利器
- Python爬虫文章
- Python爬虫(一)--豆瓣电影抓站小结(成功抓取Top100电影)
- Python爬虫(二)--Coursera抓站小结
- Python爬虫(三)-Socket网络编程
- Python爬虫(四)--多线程
- Python爬虫(五)--多线程续(Queue)
- Python爬虫(六)--Scrapy框架学习
- Python爬虫(七)--Scrapy模拟登录
- Python笔记
- python 知乎爬虫
- Python 爬虫之——模拟登陆
- python的urllib2 模块解析
- 蜘蛛项目要用的数据库操作
- gzip 压缩格式的网站处理方法
- 通过浏览器的调试得出 headers转换成字典
- Python登录到weibo.com
- weibo v1.4.5 支持 RSA协议(模拟微博登录)
- 搭建Scrapy爬虫的开发环境
- 知乎精华回答的非专业大数据统计
- 基于PySpider的weibo.cn爬虫
- Python-实现批量抓取妹子图片
- Python库
- python数据库-mysql
- 图片处理库PIL
- Mac OS X安装 Scrapy、PIL、BeautifulSoup
- 正则表达式 re模块
- 邮件正则
- 正则匹配,但过滤某些字符串
- dict使用方法和快捷查找
- httplib2 库的使用