使用 PIL 压缩 PNG 图片

Aar*_*shi 5 png python-imaging-library

我在增加图像的不透明度方面遇到问题。我的原始图像是 230 KB 在此处输入图片说明

在我使用代码调整图像大小后:

Method 1:  imh=imgg.resize((1000,500),Image.ANTIALIAS) #filesize is 558 KB
Method 2:  imh=imgg.resize((1000,500),Image.ANTIALIAS)
           im2 = imh.convert('P', palette=Image.ADAPTIVE) #filesize is 170KB
Run Code Online (Sandbox Code Playgroud)

现在我使用以下代码添加图像的透明度:

def reduce_opacity(im, opacity,pathname):
    assert opacity >= 0 and opacity <= 1
    if im.mode != 'RGBA':
        im = im.convert('RGBA')
    else:
        im = im.copy()
    alpha = im.split()[3]
    alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
    im.putalpha(alpha)
    jj=<pathname>
    im.save(jj)
    return im
Run Code Online (Sandbox Code Playgroud)

方法 1:文件大小为 598 KB 方法 2:文件大小为 383 KB

所以到目前为止我得到的最好的代码是

imh=imgg.resize((1000,500),Image.ANTIALIAS)
im2 = imh.convert('P', palette=Image.ADAPTIVE)
reduce_opacity(im2,0.5,name)
Run Code Online (Sandbox Code Playgroud)

这给了我 383KB 的文件大小。要添加不透明度,它必须以 RGBA 模式打开,这会将文件大小从 170 KB 增加到 383 KB。我对此不满意,我需要进一步减小大小,有什么办法可以实现这一点,而不是妥协质量在很大程度上?