Python中的用PIL(圖像處理庫)來實現不同圖像格式的轉換。
其中PIL的九種不同模式:1、L、P、RGB、RGBA、CMYK、YCbCr、I、F。
convert()函數講解:
from PIL importImage
img = Image.open(“圖片的路徑位置”)
對於彩色圖像,不管其圖像格式是PNG,還是BMP,或者JPG,在PIL中,使用Image模塊的open()函數打開後,返回的圖像對象的模式都是“RGB”。
而對於灰度圖像,不管其圖像格式是PNG,還是BMP,或者JPG,打開後,其模式為“L”。
對於PNG、BMP和JPG彩色圖像格式之間的互相轉換都可以通過Image模塊的open()和save()函數來完成。
我們接下來總結一下PIL的另外幾種不同模式:
1、 模式“1”
模式“1”為二值圖像,非黑即白。但是它每個像素用8個bit表示,0表示黑,255表示白。
image.convert("1")
2、 模式“L”
模式“L”為灰色圖像,它的每個像素用8個bit表示,0表示黑,255表示白,其他數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“L”模式是按照下面的公式轉換的:
L = R * 299/1000 + G * 587/1000+ B * 114/1000
image.convert("L")
3、 模式“P”
模式“P”為8位彩色圖像,它的每個像素用8個bit表示,其對應的彩色值是按照調色板查詢出來的。
image.convert("P")
4、 模式“RGBA”
模式“RGBA”為32位彩色圖像,它的每個像素用32個bit表示,其中24bit表示紅色、綠色和藍色三個通道,另外8bit表示alpha通道,即透明通道。
image.convert("RGBA")
5、 模式“CMYK”
模式“CMYK”為32位彩色圖像,它的每個像素用32個bit表示。模式“CMYK”就是印刷四分色模式,它是彩色印刷時采用的一種套色模式,利用色料的三原色混色原理,加上黑色油墨,共計四種顏色混合疊加,形成所謂“全彩印刷”。
四種標准顏色是:C:Cyan = 青色,又稱為‘天藍色’或是‘湛藍’M:Magenta = 品紅色,又稱為‘洋紅色’;Y:Yellow = 黃色;K:Key Plate(blacK) = 定位套版色(黑色)。
image.convert("CMYK")
6、 模式“YCbCr”
模式“YCbCr”為24位彩色圖像,它的每個像素用24個bit表示。YCbCr其中Y是指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量。人的肉眼對視頻的Y分量更敏感,因此在通過對色度分量進行子采樣來減少色度分量後,肉眼將察覺不到的圖像質量的變化。
模式“RGB”轉換為“YCbCr”的公式如下:
Y= 0.257R+0.504G+0.098B+16
Cb = -0.148R-0.291G+0.439B+128
Cr = 0.439R-0.368G-0.071*B+128
image.convert("YCbCr")
7、 模式“I”
模式“I”為32位整型灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“I”模式是按照下面的公式轉換的
I = R * 299/1000 + G * 587/1000 + B * 114/1000
image.convert("I")
8、 模式“F”
模式“F”為32位浮點灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“F”模式是按照下面的公式轉換的:
F = R * 299/1000+ G * 587/1000 + B * 114/1000
image.convert("F")