下面是一个结合了point函数,split函数,paste函数以及merge函数的小例子。
>>> source = im.split() >>> R,G,B = 0,1,2 >>> mask = source[R].point(lambda x: x<100 and 255) >>> # x<100,return 255,otherwise return 0 >>> out_G = source[G].point(lambda x:x*0.7) >>> # 将out_G粘贴回来,但是只保留'R'通道像素值<100的部分 >>> source[G].paste(out_G,None,mask) >>> # 合并成新的图像 >>> im_new = Image.merge(im.mode,source) >>> im_new.show() >>> im.show()ImageEnhance()(图像增强)
>>> from PIL import ImageEnhance >>> brightness = ImageEnhanBce.Brightness(im) >>> im_brightness = brightness.enhance(1.5) >>> im_brightness.show() >>> im_contrast = ImageEnhance.Contrast(im) >>> im_contrast.enhance(1.5) <PIL.Image.Image image mode=RGB size=296x299 at 0x7F62AE271AC8> >>> im_contrast.enhance(1.5).show()ImageEnhance是PIL下的一个子类,主要用于图像增强,比如增加亮度(Brightness),增加对比度(Contrast)等。上面的代码将原来图像的亮度增加50%,将对比度也增加了50%。
ImageSequence()(处理图像序列)
下面的代码可以遍历gif图像中的所有帧,并分别保存为图像
除了上面使用迭代器的方式以外,还可以一帧一帧读取gif,比如下面的代码:
>>> index = 0 >>> while 1: ... try: ... gif.seek(index) ... gif.save("%d.%s" %(index,'jpg' if gif.mode == 'JPEG' else 'png')) ... index += 1 ... except EOFError: ... print("Reach the end of gif sequence!") ... break上面的代码在读取到gif的最后一帧之后,会throw 一个 EOFError,所以我们只要捕获这个异常就可以了。