(1)PIL可以做很多和圖像處理相關的事情:
-
圖像歸檔(Image Archives)。PIL非常適合於圖像歸檔以及圖像的批處理任務。你可以使用PIL創建縮略圖,轉換圖像格式,打印圖像等等。
-
圖像展示(Image Display)。PIL較新的版本支持包括Tk PhotoImage,BitmapImage還有Windows DIB等接口。PIL支持眾多的GUI框架接口,可以用於圖像展示。
-
圖像處理(Image Processing)。PIL包括了基礎的圖像處理函數,包括對點的處理,使用眾多的卷積核(convolution kernels)做過濾(filter),還有顏色空間的轉換。PIL庫同樣支持圖像的大小轉換,圖像旋轉,以及任意的仿射變換。PIL還有一些直方圖的方法,允許你展示圖像的一些統計特性。這個可以用來實現圖像的自動對比度增強,還有全局的統計分析等。
(2)PIL庫Image類介紹
Image類中的函數
1. open(filename) : 根據參數加載圖像文件。建議采用文件的全路徑,如下面的文件位於d盤中
|
2. new(mode,size,color): 這個函數創建一幅給定模式(mode)和尺寸(size)的圖片,如果省略color參數,則創建的圖片被黑色填充滿,如果 color 參數是 None 值,則圖片還沒初始化。
3. open(StringIO.StringIO(buffer)): 從字符串中獲取圖像。
4.frombytes(mode,size,data):根據像素點(data)創建圖像
5.verify :對圖像文件完整性進行檢查,返回異常。
Image類的常用屬性
1.format:識別圖像格式或來源,如果圖像不是從文件中讀取,值為none
2.mode:圖像的色彩模式,'L'為灰色圖像,'RGB'為真彩色圖像,"CMYk"為出版圖像。
3.size:圖像寬度和高度,單位是像素,返回值為二元元組。
4.palette:調色板屬性,返回一個ImagePalette類型
查看已讀取的圖像文件的屬性如下:
print(im.format,im.size,im.mode) JPEG (900,598),RGB |
Image類的方法
1.seek(frame): 跳轉並返回圖像中的指定幀
2.tell():返回當前幀的序號
3.save(filename,format):將圖像保存為filename文件名,format是圖片格式
4.convert(mode):使用不同的參數,轉換圖像為新的模式
5.thumbnail(size):創建圖像的縮略圖,size是縮略圖尺寸的二元元祖
6.resize(size):按size大小調整圖像,生成副本。
7.rotate(angle):按angle角度旋轉角度,生成副本。
8.point(func):根據函數func的功能對每個元素進行運算,返回圖像副本、
9.split(): 提取RGB圖像的每個顏色通道,返回圖像副本、
10.merge(mode,bands):合並通道,其中mode表示色彩,bands表示新的色彩通道。
11.blend(im1,im2,alpha): 將兩幅圖片im1和im2按照如下公式插值后生成新的圖im3,im1*(1.0-alpha)+im2*alpha
我做的一個實例:
from PIL import Image from PIL import ImageFilter from PIL import ImageEnhance im=Image.open("d:\\十二星座.png") om=im.filter(ImageFilter.CONTOUR) om=ImageEnhance.Contrast(im) om.enhance(120).save("d:\\十二星座.png") |
一開始的圖片是
使用Image類后
2.對一張圖片生成縮略圖
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance
im=Image.open("d:\\猴猴厚.png")
im.thumbnail((128,128))
im.save("d:\\猴猴厚.png","png")
兩張圖做對比: