我尝试使用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获得相同的结果?
答案 0 :(得分:0)
根据official documentation,您可以将可选参数传递给save
对象的PIL.Image
方法。
虽然我没有经历任何尺寸变化,但是在我的测试中,以下选项产生的图像尺寸较小:
img.save('res.png', compress_level=9, optimize=True)