一:Pillow简介
Pillow 是PIL的替代版本,PIL软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。
Pillow 为了解决 PIL 的两个问题:
1. 不兼容setuptools
2. 报告的问题太多,而更新太慢
二:Pillow Image
from PIL import Image
im = Image.open("Image.JPG")
# format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None;
# size属性是一个tuple,表示图像的宽和高(单位为像素);
# mode属性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。
# 如果文件不能打开,则抛出IOError异常。
print(im.format, im.size, im.mode)
# 标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后使用xv进行显示。
# 如果没有安装xv,该函数甚至不能工作。但是该方法非常便于debug和test。
#(windows中应该调用默认图片查看器打开)
im.show()
三:Pillow 例子
网上有很多不错的例子,可以参考http://www.cnblogs.com/apexchu/p/4231041.html
和http://www.myexception.cn/image/1845354.html
import os, sys
import argparse
from PIL import Image
parser = argparse.ArgumentParser()
parser.add_argument("inputfile", help="inputfile name")
result = parser.parse_args()
try:
filename, prefix = os.path.splitext(result.inputfile)
outfile = filename + ".jpg"
Image.open(result.inputfile).save(outfile)
except IOError:
print("cannot convert", result.inputfile)
import os, sys
import argparse
from PIL import Image
parser = argparse.ArgumentParser()
parser.add_argument("inputfile", help="inputfile name")
parser.add_argument("delta", type=int)
result = parser.parse_args()
def roll(image, delta):
"Roll an image sideways"
image = image.copy() # copy image
xsize, ysize = image.size
delta = delta % xsize
if delta == 0:
return image
part1 = image.crop((0, 0, delta, ysize))
part2 = image.crop((delta, 0, xsize, ysize))
image.paste(part2, (0, 0, xsize - delta, ysize))
image.paste(part1, (xsize - delta, 0, xsize, ysize))
return image
try:
filename, prefix = os.path.splitext(result.inputfile)
outfile = filename + ".jpg"
# Image.open(result.inputfile).save(outfile)
im = Image.open(result.inputfile)
im = roll(im, result.delta)
im.save(outfile)
except IOError:
print("cannot convert", result.inputfile)
总体来说Pillow还是很强大的一个图像处理库,如果想深入的话可以继续查看代码学习;