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格式的圖片的情況。

參考文檔:https://pillow.readthedocs.io/en/5.1.x/handbook/image-file-formats.html#jpeg

參考文檔:https://pillow.readthedocs.io/en/4.0.x/PIL.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章