好玩圖像PIL處理 一、PIL庫學習總結 1、PIL中的模塊 Image模塊、ImageChops模塊、ImageCrackCode模塊、ImageDraw模塊、ImageEnhance模塊、ImageFile模塊、ImageFileIO模塊、ImageFilter模塊、ImageFont模塊、Im ...
好玩圖像PIL處理
一、PIL庫學習總結
1、PIL中的模塊
Image模塊、ImageChops模塊、ImageCrackCode模塊、ImageDraw模塊、ImageEnhance模塊、ImageFile模塊、ImageFileIO模塊、ImageFilter模塊、ImageFont模塊、ImageGrab模塊、ImageOps模塊、ImagePath模塊、ImageSequence模塊、ImageStat模塊、ImageTk模塊、ImageWin模塊、PSDraw模塊。最常用模塊為Image模塊、ImageFilter模塊、ImageEnhance模塊。
2、Image類的解釋
Image類的圖像讀取和創建方法
方法 | 描述 |
Image.open(filename) | 根據參數載入圖像文件 |
Image.new(mode,size,color) | 根據給定參數創建一個新的圖像 |
Image.open(StringIO.StringIO(buffer)) | 從字元串中獲取圖像 |
Image.frombytes(mode,size,data) | 根據像素點data創建圖像 |
Image.veify() | 對圖像文件完整性進行檢查,返回異常 |
Image類的常用屬性
屬性 | 描述 |
Image.format | 標識圖像格式或來源,如果圖形不是從文件讀取,值為None |
Image.mode | 圖形的色彩模式,"L"為灰度圖像,"RGB"為真彩色圖像,"CMYK"為出版圖像 |
Image.size | 圖像高度與寬度,單位是像素(px),返回值是二元元組(tuple) |
Image.palette | 調色板屬性,返回一個ImagePalette類型 |
Image類的序列圖像操作方法
方法 | 描述 |
Image.seek(frame) | 跳轉並返回圖像中的指定幀 |
Image.tell() | 返回當前幀的序號 |
Image類的圖像轉換和保存方法
方法 | 描述 |
Image.save(filename,format) | 將圖像保存為filename文件名,format是圖片格式 |
Image.convert(mode) | 使用不同的參數,轉換圖像為新的模式 |
Image.thumbnail(size) | 創建圖像的縮略圖,size是縮略圖尺寸的二元元組 |
Image類的圖像旋轉與縮放方法
方法 | 描述 |
Image.resize(size) | 按size大小調整圖像,生成副本 |
Image.rotate(angle) | 按angle角度旋轉圖像,生成副本 |
Image類的圖像像素和通道處理方法
方法 | 描述 |
Image.piont(func) | 根據函數func的功能對每個元素進行運算,返回圖像副本 |
Image.split() | 提取RGB圖像的每個圖形通道,返回圖像副本 |
Image.merge(mode,bands) | 合併通道,其中mode表示色彩,bands表示新的色彩通道 |
Image.blend(im1,im2,alpha) |
將兩幅圖片im1和im2按照如下公式插值後生成新的圖像: im1*(1.0-alpha)+im2*alpha |
引用方法:
1 from PIL import Image 2 im=Image.open("D:\\我的文件\\Python\\壁紙3.jpg") 3 im.thumbnail((158,158)) 4 om.save("D:\\我的文件\\Python\\壁紙5.jpg")
3、ImageFilter類的解釋
ImageFilter類的預定義過濾方法
方法表示 | 描述 |
ImageFilter.BLUK | 圖像的模糊效果 |
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 ImageFilter 2 im=Image.open("D:\\我的文件\\Python\\壁紙5.jpg") 3 om=im.filter(ImageFilter.CONTOUR) 4 om.save("D:\\我的文件\\Python\\壁紙2.jpg") 5 om=im.filter(ImageFilter.EMBOSS) 6 om.save("D:\\我的文件\\Python\\壁紙1.jpg")
4、ImageEnance類的解釋
ImageEnhance類的圖像增強和濾鏡方法
方法 | 描述 |
ImageEnhance.enhance(factor) | 對選擇的屬性增強factor倍 |
ImageEnhance.Color(im) | 調整圖像的顏色平衡 |
ImageEnhance.Contrast(im) | 調整圖像的對比度 |
ImageEnhance.Brightness(im) | 調整圖像的亮度 |
ImageEnhance.Sharpness(im) | 調整圖像的銳度 |
引用如下:
1 from PIL import Image 2 from PIL import ImageEnhance 3 im=Image.open("D:\\我的文件\\Python\\壁紙4.jpg") 4 om=ImageEnhance.Contrast(im) #調整圖像的對比度 5 om.enhance(20).save("D:\\我的文件\\Python\\壁紙7.jpg") 6 om=ImageEnhance.Sharpness(im) #調整圖像的銳度 7 om.enhance(20).save("D:\\我的文件\\Python\\壁紙6.jpg")
二、圖像處理的實例
1、生成縮略圖
1 from PIL import Image 2 im=Image.open("D:\\我的文件\\Python\\壁紙5.jpg") 3 im.thumbnail((58,58))
顯示如下:
1 from PIL import Image 2 im=Image.open("D:\\我的文件\\Python\\壁紙3.jpg") 3 im.thumbnail((158,158))
4 om.save("D:\\我的文件\\Python\\壁紙5.jpg")
顯示如下:
2、圖像處理
代碼如下:
1 from PIL import Image 2 from PIL import ImageFilter 3 im=Image.open("D:\\我的文件\\Python\\壁紙5.jpg") 4 im.thumbnail((158,158)) 5 om.save("D:\\我的文件\\Python\\壁紙5.jpg") 6 r,g,b=im.split() 7 om=Image.merge("RGB",(b,g,r)) 8 om.save("D:\\我的文件\\Python\\壁紙3.jpg") 9 om=im.filter(ImageFilter.CONTOUR) 10 om.save("D:\\我的文件\\Python\\壁紙2.jpg") 11 om=im.filter(ImageFilter.EMBOSS) 12 om.save("D:\\我的文件\\Python\\壁紙1.jpg")
顯示如下:
3、提取圖像每一幀
1 from PIL import Image 2 #from PIL import ImageFilter 3 im=Image.open("D:\\我的文件\\Python\\動圖.gif") 4 try: 5 im.save('picframe{:02d}.png'.format(im.tell())) 6 while True: 7 im.seek(im.tell()+1) 8 im.save('picframe{:02d}.png'.format(im.tell())) 9 except: 10 print("處理結束")
4、美圖秀秀
1 from PIL import Image 2 from PIL import ImageEnhance 3 im=Image.open("D:\\我的文件\\Python\\壁紙4.jpg") 4 om=ImageEnhance.Contrast(im) #調整圖像的對比度 5 om.enhance(20).save("D:\\我的文件\\Python\\壁紙7.jpg") 6 om=ImageEnhance.Sharpness(im) #調整圖像的銳度 7 om.enhance(20).save("D:\\我的文件\\Python\\壁紙6.jpg") 8 om=ImageEnhance.Brightness(im) #調整圖像的亮度 9 om.enhance(1).save("D:\\我的文件\\Python\\壁紙8.jpg")
結果如下:
5、好玩的gif圖片
1 from PIL import Image 2 import os #第一步 獲得所有圖像文件列表,過濾不需要擴展名 3 filelist = [] 4 path = os.getcwd() 5 files = os.listdir("D:\\我的文件\\Python") 6 for f in files: 7 if(os.path.isfile(path + '/' + f)): 8 if (os.path.splitext(f)[1] == ".BMP"): 9 filelist.append(f) 10 if (os.path.splitext(f)[1] == ".JPG"): 11 filelist.append(f) 12 if (os.path.splitext(f)[1] == ".PNG"): 13 filelist.append(f) 14 if (os.path.splitext(f)[1] == ".TIF"): 15 filelist.append(f) #第二步 當判斷文件不是GIF格式的時候轉換為GIF格式 16 for infile in filelist: 17 outfile = os.path.splitext(infile)[0] + ".gif" 18 if infile != outfile: 19 try: 20 Image.open(infile).save(outfile) 21 print("Covert to GIF successfully!") 22 except IOError: 23 print("This format can not support!") 24 infile
之後的成果我不知道怎麼展示~~~~
所以就到這裡啦
感覺自己好酷哦(哈哈哈哈哈哈哈哈哈哈)