1. 程式人生 > >Python Pillow (PIL) Image.save 儲存為jpg圖片壓縮問題

Python Pillow (PIL) Image.save 儲存為jpg圖片壓縮問題

在使用Pillow中的Image.save()方法,使用預設引數儲存jpg圖片的過程中發現圖片被壓縮的很嚴重,導致原來很大的大小變成幾十K。這是因為在儲存為jpg的過程中,內部使用壓縮演算法對圖片進行的壓縮處理。

但是有些時候往往需要圖片的大小不能變化太大或不能太小。所以在使用此方式時可以加入引數:

imObj.save(img_name, quality=95)

quality引數: 儲存影象的質量,值的範圍從1(最差)到95(最佳)。 預設值為75,使用中應儘量避免高於95的值; 100會禁用部分JPEG壓縮演算法,並導致大檔案影象質量幾乎沒有任何增益。

使用此引數後,圖片大小會增加。如果圖片的大小還不能滿足你的需求,是否還有其他方式去增加圖片大小呢?

通過查閱資料並嘗試,發現save方法還有一個可以配合quality使用的引數,能夠大大增加圖片大小:

imObj.save(new_name, quality=95, subsampling=0)

subsampling引數:子取樣,通過實現色度資訊的解析度低於亮度資訊來對影象進行編碼的實踐。 (參考:https://en.wikipedia.org/wiki/Chroma_subsampling) 可能的子取樣值是0,1和2,對應於4:4:4,4:2:2和4:1:1(或4:2:0?)。

經過實踐將值設為0便可以滿足圖片大小增大的需求。

注意: 以上方法的引數只針對於儲存為JPG/JPEG格式的圖片的情況。