防止PIL增加图像的大小

时间:2017-08-05 05:18:44

标签: python image python-imaging-library

我尝试使用PIL和python来编辑图像像素以更改某些alpha值。这是我的代码:

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获得相同的结果?

1 个答案:

答案 0 :(得分:0)

根据official documentation,您可以将可选参数传递给save对象的PIL.Image方法。

虽然我没有经历任何尺寸变化,但是在我的测试中,以下选项产生的图像尺寸较小:

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