PIL(Python Imaging Library)是Python提供的圖片處理庫辑鲤。該庫支持生成縮略圖、轉(zhuǎn)換圖片格式杠茬、生成保存圖片月褥,支持對圖片的像素點操作、濾鏡瓢喉、顏色處理宁赤,同時支持對圖片的自定義大小、旋轉(zhuǎn)和任意的仿射變換等栓票。决左。。功能非常強大走贪!
PIL在Mac上的安裝參考文章Mac OS X安裝 Scrapy佛猛、PIL、BeautifulSoup
打開圖片
import Image
image = Image.open("image.png")
print image.format, image.size, image.mode
展示圖片
image.show()
圖片格式轉(zhuǎn)換
import os, sys
image Image
#...
image.save('image.jpg')
縮略圖
圖片縮小為原圖的四分之一
import os, sys
image Image
#...
width = image.size[0]
height = image.size[1]
size = width / 4, height / 4
image.thumbnail(size)
image.save('image_thumbnail.png')
裁剪粘貼
box = (0, 0, width, height / 2)
imageCut = image.crop(box).transpose(Image.ROTATE_180)
image.paste(imageCut, box)
image.show()
注意box
的四個參數(shù)的意義與一般理解不同厉斟,第一個與第二個參數(shù)可視為左上角坐標(biāo)(0, 0)挚躯,第三個與第四個參數(shù)可視為右下角坐標(biāo)(width, height / 2)强衡,所以這里我們截取的區(qū)域是圖片的上半部分擦秽。
crop(box)
方法執(zhí)行截圖操作,transpose(Image.ROTATE_180)
顧名思義漩勤,是將截取的圖片旋轉(zhuǎn)180度感挥。
paste(imageCut, box)
圖片的粘貼,第一個參數(shù)imageCut
是要粘貼的圖片越败,第二個參數(shù)box
是粘貼在哪個位置触幼。需要注意的是兩個參數(shù)的 大小必須相同。
分離與合并通道
r, g, b = image.split()
r.show()
g.show()
b.show()
image = Image.merge("RGB", (b, g, r))
image.show()
分離RGB通道究飞,并分別展示置谦。Image.merge("RGB", (b, g, r))
是將圖片的RB通道互換堂鲤。
簡單的幾何變換
image.resize((300, 500)).show()
image.rotate(15).show()
image.transpose(Image.FLIP_LEFT_RIGHT).show()
說一下第三個方法transpose(...)
,例子中的參數(shù)Image.FLIP_LEFT_RIGHT
表示左右旋轉(zhuǎn)媒峡,還有代表其他意義的參數(shù):
FLIP_LEFT_RIGHT
:左右旋轉(zhuǎn)
FLIP_TOP_BOTTOM
:上下旋轉(zhuǎn)
ROTATE_90
:旋轉(zhuǎn)90度
ROTATE_180
:旋轉(zhuǎn)180度
ROTATE_270
:旋轉(zhuǎn)270度
濾鏡 ImageFilter
哇哦瘟栖,這個功能是最讓人期待的,不過很可惜谅阿,因為PIL只提供了10種濾鏡效果半哟。
使用時注意引入ImageFilter
import ImageFilter
#...
image.filter(ImageFilter.BLUR).show()
所有的濾鏡是
ImageFilter.BLUR
模糊
ImageFilter.CONTOUR
輪廓
ImageFilter.DETAIL
細(xì)節(jié)
ImageFilter.EDGE_ENHANCE
邊界加強
ImageFilter.EDGE_ENHANCE_MORE
邊界加強(閥值更大)
ImageFilter.EMBOSS
浮雕
ImageFilter.FIND_EDGES
邊界
ImageFilter.SMOOTH
平滑
ImageFilter.SMOOTH_MORE
平滑(閥值更大)
ImageFilter.SHARPEN
銳化
來看一下效果:
PIL的官方文檔在 這里