Python之PIL库的运用、GIF处理
一.PIL庫簡(jiǎn)介
PIL(Python Image Library)庫是Python語言的第三方庫,它支持圖像存儲(chǔ)、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對(duì)圖像的縮放、剪裁、折疊以及像圖片添加線條、圖像和文字等操作。
1.PIL庫主要可以實(shí)現(xiàn)圖像歸檔和圖像處理兩方面功能需求。
(1)圖像歸檔:對(duì)圖像進(jìn)行批處理、生成圖像預(yù)覽、圖像格式轉(zhuǎn)換等。
(2)圖像處理:圖像基本處理、像素處理、顏色處理等。
二.PIL庫的子庫(共21個(gè))
現(xiàn)僅選取Image類、ImageFilter類與ImageEnhance類進(jìn)行介紹。
1.Image類
1.1 Image類的圖像讀取與創(chuàng)建
| 方法 | 描述 |
| Image.open(filename) | 根據(jù)參數(shù)加載圖像文件 |
| Image.new(mode,size,color) | 根據(jù)給定參數(shù)創(chuàng)建一個(gè)新的圖像 |
| Image.open(StringIO.StringIO(buffer)) | 從字符串中獲取圖像 |
| Image.frombytes(mode,size,data) | 根據(jù)像素點(diǎn)data創(chuàng)建圖像 |
| Image.verify() | 對(duì)圖像文件完整性進(jìn)行檢查,返回異常 |
?
?
?
?
?
?
?
?
現(xiàn)在通過如下代碼:
1 from PIL import Image 2 im=Image.open('C:\\Users\\HJY\\Desktop\\five.jpg') #讀取圖片 3 im.show() #展示圖片?
然后用系統(tǒng)自帶圖片處理器展示圖片:
?
1. 2 Image類的常用屬性:
| 方法 | 說明 |
| Image.format | 圖像格式或來源,若圖像不是從文件讀取,返回None |
| Image.mode | 圖像的色彩模式,’L’為灰度模式,’RGB’為真彩色圖像,’C(青)M(品紅)Y(黃)K(黑)’為出版圖像 |
| Image.size | 圖像的寬度和高度,單位是像素(px),返回值為元組類型 |
| Image.palette | 調(diào)色板屬性,返回ImagePalette類型 |
?
?
?
?
?
?
?
?
?
?
?
1.3 Image類的圖像轉(zhuǎn)換和保存方法:
| 方法 | 說明 |
| Image.save(filename,format) | 將圖像保存為filename文件名,format格式 |
| Image.convert(mode) | 將圖像轉(zhuǎn)換為mode模式 |
| Image.thumbnail(size) | 創(chuàng)建圖像的縮略圖,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")結(jié)果:(超小的)
?
1.4 Image類的圖像像素和通道處理方法:
| 方法 | 說明 |
| Image.point(func) | 根據(jù)函數(shù)func的功能對(duì)每個(gè)元素進(jìn)行運(yùn)算,返回圖像副本 |
| Image.split() | 根據(jù)GRB圖像的每個(gè)顏色通道,返回圖像副本 |
| Image.merge(mode,bands) | 合成通道,其中mode為色彩,bands為新的色彩通道 |
| Image.blend(im1,im2,alpha) | 將2張圖片im1和im2按照公式插值后生成新圖像 公式:im1*(1.0 - alpha) + im2*alpha |
?
?
?
?
?
?
?
?
?
?
?
現(xiàn)在我嘗試交換圖像中的顏色,輸入如下代碼:
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類預(yù)定義圖像過濾方法
| 方法 | 說明 |
| ImageFilter.BLUR | 圖像的模糊效果 |
| ImageFilter.CONTOUR | 圖像的輪廓效果 |
| ImageFilter.DETAIL | 圖像的細(xì)節(jié)效果 |
| ImageFilter.EDGE_ENHANCE | 圖像的邊界加強(qiáng)效果 |
| ImageFilter.EDGE_ENHANCE_MORE | 圖像的閾值邊界加強(qiáng)效果 |
| ImageFilter.EMBOSS | 圖像的浮雕效果 |
| ImageFilter.FIND_EDGES | 圖像的邊界效果 |
| ImageFilter.SMOOTH | 圖像的平滑效果 |
| ImageFilter.SMOOTH_MORE | 圖像的閾值平滑效果 |
| ImageFilter.SHARPEN | 圖像的銳化效果 |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
有這么多功能,我就嘗試一下其中一個(gè)吧。
輸入代碼:
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類(圖像增強(qiáng))
3.1 ImageEnhance類圖像增強(qiáng)與濾鏡方法
| 方法 | 說明 |
| ImageEnhance.enhance(factor) | 對(duì)所選屬性的數(shù)值增強(qiáng)factor倍 |
| ImageEnhance.Color(im) | 調(diào)整圖像的顏色平衡 |
| ImageEnhance.Contrast(im) | 調(diào)整圖像的對(duì)比度 |
| ImageEnhance.Brightness(im) | 調(diào)整圖像的亮度 |
| ImageEnhance.Sharpness(im) | 調(diào)整圖像的銳度 |
?
?
?
?
?
?
?
?
?
?
?
?
在這就不展示了,大家自己嘗試一下吧~
三、GIF
我選取一個(gè)gif對(duì)它進(jìn)行分解
輸入代碼:
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("處理結(jié)束")結(jié)果:(哇~)
The end...
轉(zhuǎn)載于:https://www.cnblogs.com/hjy567jiayouya/p/10705528.html
總結(jié)
以上是生活随笔為你收集整理的Python之PIL库的运用、GIF处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vm无法删除干净老版本,新版本无法安装解
- 下一篇: 4.14 | 学习笔记