最近剛接觸Python,以迅雷不及掩耳盜鈴之勢(只是迫不及待)應用到工作中去了
之前用 cmd+photoshop做批量影像處理(縮放切片),在執行效率(速度)上和靈活度上有很大限制,遂轉戰Python(我對於大語種龐大的類庫感到力不從心,喜歡用指令碼語言來快速編輯、執行)
真正開始學習Python第一天,我奮戰到深夜三點,勉強完成了可以替代先前用“cmd+photoshop快捷批處理”實現的切圖工具,執行效率大概是先前的10倍。
為什麼說是“勉強”,因為輸出映像品質沒Photoshop輸出的好。
Python影像處理用到PIL(Python Imaging Library),在resize(縮放)的時候會很大程度得降低映像可觀性(給我的感覺是部分像素相對位置亂了,沒有平滑縮放過渡),看下樣本:
(左:PS改變映像大小後輸出,右:使用PIL的縮放im.resize(size)後輸出)
上面可以看到PIL預設縮放後輸出的映像有“破損”
今天google到園子中另一位兄弟的一篇隨筆裡麵包含了這個高品質輸出的說明
PIL帶ANTIALIAS濾鏡縮放結果
im.resize(size, Image.ANTIALIAS)
從結果看,基本上可以和PS輸出的相匹敵了
速度上,比不帶ANTIALIAS濾鏡輸出的慢了8倍左右,但還是比PS輸出快,而且整個程式穩定性和靈活度比CMD+PS快捷批處理來的好。
在這之前我一直以為是最後im.save輸出導致映像品質下降的,浪費了不少時間,嗨~~
備忘此次練兵涉及的內容:
映像分割
>>> box = (int(left), int(top),int(right),int(bottom))
>>> region = im.crop(box)
映像縮放
>>> im_resized=im.resize(size, Image.ANTIALIAS)
類似dir的方法:glob
>>> path="c:/test"
>>> glob.glob(path+"/*")
還涉及一些os操作
os.path.basename
os.path.isdir
os.path.exists
os.mkdir