python 图像处理库 PIL/Pillow Python Imaging Library

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 的错如下:

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

发表回复