Python之PIL庫的運用、GIF處理


一.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...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM