Python學習第九十三天:Python批次處理圖片
1。Pillow庫介紹
Pillow是Python裡的影象處理庫,提供了了廣泛的檔案格式支援,強大的影象處理能力,主要包括影象儲存、影象顯示、格式轉換以及基本的影象處理操作等;
安裝
pip
install
pillow
2。Image類
PIL中最重要的類是Image類,使用前需要先從PIL中匯入Image類,要從檔案載入影象可以使用Image類中的open()函式:
Image。open(fp, mode =‘r’ )
,如果載入成功則會返回一個Image物件,fp是圖片路徑,mode是模式。影象的物件屬性有filename原始檔的檔名或路徑、format圖片的格式、size圖片大小,以畫素為單位、mode圖片模式、width影象寬度、height影象高度、palette調色盤表等;
save(fp, format=None, **params)
:儲存影象到給定的檔名下,如果沒有指定格式則可以使用副檔名來確定要使用的格式,無返回值。fp是檔名或路徑,format可選的格式覆蓋;
thumbnail(size, resample=3)
:指定圖片的畫素,size是大小,resample是重取樣濾波器,可以是
Image。NEAREST
、
Image。BILINEAR
、
Image。BICUBIC
或者
Image。LANCZOS
,預設為
Image。BICUBIC
;
rotate(angle, resample=0, expand=0, ceter=None, translate=None)
:旋轉圖片的方向,返回旋轉後的影象副本,一個Image物件 。angle角度,逆時針旋轉、resample重取樣濾波器、expand是否展開、center旋轉中心、translate旋轉後;
filter(filter)
:給圖片新增濾鏡,返回一個Image物件,filter是過濾器;
transpose(method)
:旋轉或翻轉影象,返回旋轉或翻轉後的影象副本,一個Image物件。method可以是
Image。FLIP_LEFT_RIGHT
、
Image。FLIP_TOP_BOTTOM
、
Image。ROTATE_90
、
Image。ROTATE_180
、
Image。ROTATE_270
、
Image。TRANSPOSE
或者
Image。TRANSVERSE
;
show()
:顯示這個影象,此方法主要用於除錯目的;
# 獲取圖片的基本資訊
from PIL import Image
im = Image。open(‘。/image。jpg’)
# 獲取圖片的格式,大小,以及模式
print(im。format, im。size, im。mode)
# 指定圖片的畫素
im。thumbnail((128,128))
im。save(‘。/image_128_128。jpg’)
# 旋轉圖片的方向
dest_im = im。rotate(90)
dest_im。save(‘。/image_rotate。jpg’)
# 給圖片新增濾鏡
dest_im = im。filter(ImageFilter。GaussianBlur)
dest_im。show()
# 圖片反轉
dest_im = im。transpose(Image。FLIP_LEFT_RIGHT) # 左右反轉
dest_im = im。transpose(Image。FLIP_TOP_BOTTOM) # 上下反轉
dest_im。show()
# 圖片上寫文字
image = Image。open(‘image。jpg’)
img_draw = ImageDraw。Draw(image)
img_draw。text((770,250),‘hello world’,fill=‘green’) # 放上文字資訊到影象上
image。show()
3。ImageDraw模組
ImageDraw模組為Image物件提供簡單的2D圖形,可以使用此模組建立新影象,註釋或潤飾現有影象,以及動態生成圖形以供Web使用;
ImageDraw。Draw(im,mode=None)
:建立可用於在給定影象中繪製的物件,im要繪製的影象、mode 用於顏色值的可選模式;
ImageDraw。text(xy,text,fill=None,font=None,anchor=None,spacing=0,align =“left”,direction = None,features=None,language=None)
:在給定位置繪製字串,xy文字的左上角、text要繪製的文字、fill用於文字的顏色、direction文字的方向、language文字的語言;
ImageDraw。point(xy,fill=None)
:在給定座標處繪製點,xy元組的序列或類似的數值、fill用於點的顏色; 更多可以檢視網址:
https://
pillow。readthedocs。io/e
n/latest/reference/index。html
4。批次將圖片的大小設定為指定大小
import os
from PIL import Image
# 源目錄
project_dir = os。path。dirname(os。path。abspath(__file__))
input = os。path。join(project_dir, ‘src’)
# 輸出目錄
output = os。path。join(project_dir, ‘dest’)
def modify():
# 切換目錄
os。chdir(input)
# 遍歷目錄下所有的檔案
for image_name in os。listdir(os。getcwd()):
print(image_name)
im = Image。open(os。path。join(input, image_name))
im。thumbnail((128, 128))
im。save(os。path。join(output, image_name))
if __name__ == ‘__main__’:
modify()
參考:
https://www。
9xkd。com/user/plan-view
。html?id=1113747022