PIL:Python Imaging Library,是Python平台事实上的图像处理标准库,PIL功能非常强大。Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其封装成python的库(pip即可安装),且支持python2和python3。由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow。
1、Pillow安装
注意 : Pillow 不能和 PIL 在一个环境里共存,所以如果安装过 PIL,请先卸载 PIL!
Pillow的Github主页:https://github.com/python-pillow/Pillow
pip install pillow
2、简介
PIL和Pillow的调用都是 import PIL。所以,以下Pillow称为PIL,因为我的环境是python3.x。PIL可以做很多和图像处理相关的事情:
- 图像归档(Image Archives):PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
- 图像展示(Image Display):PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
- 图像处理(Image Processing):PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。
3、代码示例
from PIL import Image im=Image.open("doge.jpg") #打开一张图片 #图片的属性 print(im.mode) #图片的模式,如RGB print(im.size) #图片的尺寸 print(im.format) #图片的格式 print(im.info) #图片的信息 print(im.histogram()) #图片的颜色直方图 #图片的操作 im.rotate(45).show() #将图片向左旋转45度并显示 im.copy().show() #将图片复制并且显示 im=im.convert("P") #将图片模式变为8位像素模式,即灰度模式 im.save("Coin.png") #保存为test.png图片
其他功能如切片、旋转、滤镜、输出文字、调色板等一应俱全。
模糊效果也只需几行代码:
from PIL import Image, ImageFilter # 打开一个jpg图像文件,注意是当前路径: im = Image.open('C:/path/to/image/doge.png') # 应用模糊滤镜: im2 = im.filter(ImageFilter.BLUR) im2.save('C:/path/to/image/doge_obscure.png')
图片模糊效果的代码在执行的时候可能会遇到报cannot filter palette images 的错如下:

print (im.format, im.size,im.mode) # PNG (300, 372) P
P代表是调色板。
在StackOverflow上搜索了下,找到了该问题:
http://stackoverflow.com/questions/10323692/cannot-filter-palette-images-error-when-doing-a-imageenhance-sharpness
It’s quite common for algorithms to be unable to work with a palette based image. The convert in the above changes it to have a full RGB value at each pixel location.
大致翻译如下:在算法中,不能处理一个调色板图像很正常。这种“转换”需要在每一个像素点有全RGB值。 所以对应修改代码如下:
im2 = im.convert('RGB').filter(ImageFilter.BLUR)
PIL还有很多的强大功能,请请参考Pillow官方文档:https://pillow.readthedocs.org/
参考链接:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017785454949568
https://blog.csdn.net/u010196573/article/details/16822035