2017-08-05 103 views
-1

我正在嘗試使用Python的PIL編輯圖像的像素以更改alpha的某些值。這裏是我的代碼:
防止PIL增加圖像的大小

import os 
import sys 

from PIL import Image 

im = Image.open('test.png').convert("RGBA") 
pixelMap = im.load() 

img = Image.new(im.mode, im.size) 
pixelsNew = img.load() 

for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     pixelsNew[i,j] = pixelMap[i,j] 

tmp = pixelsNew[40, 50] 
pixelsNew[40, 50] = (tmp[0], tmp[1], tmp[2], tmp[3] - 1) 

img.save('res.png') 

它非常好,但我覺得這個節目使圖像大得多。例如,我使用大小僅爲16KB的test.png來做測試。執行此代碼後,我得到結果res.png,其大小爲111KB。

爲什麼?有沒有辦法減小結果的大小?

此外,我還使用Photoshop做同樣的事情,這意味着使用Photoshop來更改alpha的值。但Photoshop給了我一個結果,其大小不會改變。是否有可能獲得與PIL相同的結果?

回答

0

根據official documentation,可以將可選參數傳遞給PIL.Image對象的save方法。

雖然我沒有任何規模大小體驗更改量級你,下面的選項在我的測試中取得了較低的圖像尺寸:

img.save('res.png', compress_level=9, optimize=True) 
+0

感謝了很多,但我得到了同樣的結果... – Yves