Python高質量縮放切圖,抗鋸齒


最近剛接觸Python,以迅雷不及掩耳盜鈴之勢(只是迫不及待)應用到工作中去了
之前用 cmd+photoshop做批量圖像處理(縮放切片),在執行效率(速度)上和靈活度上有很大限制,遂轉戰Python(我對於大語種龐大的類庫感到力不從心,喜歡用腳本語言來快速編輯、執行)
真正開始學習Python第一天,我奮戰到深夜三點,勉強完成了可以替代先前用“cmd+photoshop快捷批處理”實現的切圖工具,執行效率大概是先前的10倍。
為什么說是“勉強”,因為輸出圖像質量沒Photoshop輸出的好。
Python圖像處理用到PIL(Python Imaging Library),在resize(縮放)的時候會很大程度得降低圖像可觀性(給我的感覺是部分像素相對位置亂了,沒有平滑縮放過渡),看下示例:
 ps_resize.jpg   pil_resize_default.jpg   
(左:PS改變圖像大小后輸出,右:使用PIL的縮放im.resize(size)后輸出)
上面可以看到PIL默認縮放后輸出的圖像有“破損”
今天google到園子中另一位兄弟的一篇隨筆里面包含了這個高質量輸出的說明

pil_resize_filter.jpg
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


免責聲明!

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



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