多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 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)