PIL 学习笔记(1)
使用 Python Image Library (PIL), 需要先导入相关模块:
import Image
如何加载图片:
im = Image.open(r"D:/www/icon_1.jpg")
如果加载发生错误,会引发 IOError.
打印出图片的格式、大小、模式
print im.format, im.size, im.mode
图片的显示,用 show() 方法
im.show()
show() 需要调用 xv 程序,适合调试和测试。在 Windows 上通常是调用相关的关联程序来打开(我的是 AcdSee)。注意这个方法在显示前会自动创建临时文件。
图片的保存
im.save(r"d:/www/icon_1.gif")
默认会自动根据目标文件扩展名判断保存的格式,但可以给 save 方法提供第二个参数指定格式。
创建缩略图
im.thumbnail((128, 128))
im.save(r"d:/www/icon_1.thumbnail", "JPEG")
im.save(r"d:/www/icon_1.thumbnail", "JPEG")
图片的区域裁剪
用 crop 方法可以裁剪图片中的一个矩形区域
box = (100, 100, 400, 400) # (left, upper, right, lower)
region = im.crop(box)
region = im.crop(box)
图片的粘贴
处理上面的区域,然后粘贴回来:
region = region.transpose(Image.ROTATE_180)
im.paste(region, box)
im.paste(region, box)
需要注意粘贴的时候目标区域大小要和被粘贴的图片一样大。
高级技巧:paste 方法可以指定可选参数,设定透明度(0~255).
PIL 还可以处理 multi-band 图片的每个独立的 band. 比如 RGB. 然后用 merge 函数重新合并:
r, g, b = im.split()
im = Image.merge("RGB", (b, g, r))
im = Image.merge("RGB", (b, g, r))