一.PIL庫簡介
PIL(Python Image Library)庫是Python語言的第三方庫,它支持圖像存儲、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對圖像的縮放、剪裁、折疊以及像圖片添加線條、圖像和文字等操作。
1.PIL庫主要可以實現圖像歸檔和圖像處理兩方面功能需求。
(1)圖像歸檔:對圖像進行批處理、生成圖像預覽、圖像格式轉換等。
(2)圖像處理:圖像基本處理、像素處理、顏色處理等。
二.PIL庫的子庫(共21個)
現僅選取Image類、ImageFilter類與ImageEnhance類進行介紹。
1.Image類
1.1 Image類的圖像讀取與創建
方法 | 描述 |
Image.open(filename) | 根據參數加載圖像文件 |
Image.new(mode,size,color) | 根據給定參數創建一個新的圖像 |
Image.open(StringIO.StringIO(buffer)) | 從字符串中獲取圖像 |
Image.frombytes(mode,size,data) | 根據像素點data創建圖像 |
Image.verify() | 對圖像文件完整性進行檢查,返回異常 |
現在通過如下代碼:
1 from PIL import Image 2 im=Image.open('C:\\Users\\HJY\\Desktop\\five.jpg') #讀取圖片 3 im.show() #展示圖片
然后用系統自帶圖片處理器展示圖片:
1. 2 Image類的常用屬性:
方法 |
說明 |
Image.format |
圖像格式或來源,若圖像不是從文件讀取,返回None |
Image.mode |
圖像的色彩模式,’L’為灰度模式,’RGB’為真彩色圖像,’C(青)M(品紅)Y(黃)K(黑)’為出版圖像 |
Image.size |
圖像的寬度和高度,單位是像素(px),返回值為元組類型 |
Image.palette |
調色板屬性,返回ImagePalette類型 |
1.3 Image類的圖像轉換和保存方法:
方法 |
說明 |
Image.save(filename,format) |
將圖像保存為filename文件名,format格式 |
Image.convert(mode) |
將圖像轉換為mode模式 |
Image.thumbnail(size) |
創建圖像的縮略圖,size是縮略圖尺寸的元組 |
嘗試做圖像的縮略圖,輸入如下代碼:
1 from PIL import Image 2 im=Image.open('C:\\Users\\HJY\\Desktop\\five.jpg') 3 im.thumbnail((128,128)) 4 im.save("minifive","PNG")
結果:(超小的)
1.4 Image類的圖像像素和通道處理方法:
方法 |
說明 |
Image.point(func) |
根據函數func的功能對每個元素進行運算,返回圖像副本 |
Image.split() |
根據GRB圖像的每個顏色通道,返回圖像副本 |
Image.merge(mode,bands) |
合成通道,其中mode為色彩,bands為新的色彩通道 |
Image.blend(im1,im2,alpha) |
將2張圖片im1和im2按照公式插值后生成新圖像 公式:im1*(1.0 - alpha) + im2*alpha |
現在我嘗試交換圖像中的顏色,輸入如下代碼:
1 from PIL import Image 2 im=Image.open('C:\\Users\\HJY\\Desktop\\five.jpg') 3 r,g,b=im.split() 4 om=Image.merge("RGB",(b,g,r)) 5 om.save('fivebgr.jpg')
原圖——新圖
(哈哈,有些可怕)
2.ImageFilter類(圖像的過濾)
2.1 ImageFilter類預定義圖像過濾方法
方法 |
說明 |
ImageFilter.BLUR |
圖像的模糊效果 |
ImageFilter.CONTOUR |
圖像的輪廓效果 |
ImageFilter.DETAIL |
圖像的細節效果 |
ImageFilter.EDGE_ENHANCE |
圖像的邊界加強效果 |
ImageFilter.EDGE_ENHANCE_MORE |
圖像的閾值邊界加強效果 |
ImageFilter.EMBOSS |
圖像的浮雕效果 |
ImageFilter.FIND_EDGES |
圖像的邊界效果 |
ImageFilter.SMOOTH |
圖像的平滑效果 |
ImageFilter.SMOOTH_MORE |
圖像的閾值平滑效果 |
ImageFilter.SHARPEN |
圖像的銳化效果 |
有這么多功能,我就嘗試一下其中一個吧。
輸入代碼:
1 from PIL import Image 2 from PIL import ImageFilter 3 im=Image.open('C:\\Users\\HJY\\Desktop\\five.jpg') 4 om=im.filter(ImageFilter.CONTOUR) 5 om.save('fiveCONTOUR.png')
輪廓版圖像:
3.ImageEnhance類(圖像增強)
3.1 ImageEnhance類圖像增強與濾鏡方法
方法 |
說明 |
ImageEnhance.enhance(factor) |
對所選屬性的數值增強factor倍 |
ImageEnhance.Color(im) |
調整圖像的顏色平衡 |
ImageEnhance.Contrast(im) |
調整圖像的對比度 |
ImageEnhance.Brightness(im) |
調整圖像的亮度 |
ImageEnhance.Sharpness(im) |
調整圖像的銳度 |
在這就不展示了,大家自己嘗試一下吧~
三、GIF
我選取一個gif對它進行分解
輸入代碼:
1 from PIL import Image 2 im=Image.open('D:\\kaixin.gif') 3 try: 4 im.save('picframe{:02d}.png'.format(im.tell())) 5 while True: 6 im.seek(im.tell()+1) 7 im.save('picframe{:02d}.png'.format(im.tell())) 8 except: 9 print("處理結束")
結果:(哇~)
The end...