缩小PNG图像会增加图像大小

时间:2016-12-07 10:06:00

标签: python algorithm png python-imaging-library image-compression

我正在尝试将文件夹中的所有图片缩小到各自大小的90%。写道:

from PIL import Image
import sys, csv, os, traceback

path = "C:\Users\Dell\Desktop\Textures\\"
dirs = os.listdir( path )
scalingFactor = .9

def resize():
 for item in dirs:
    print 'item', path+item
    if os.path.isfile(path+item):
        im = Image.open(path+item)
        f, e = os.path.splitext(path+item)
        imResize = im.resize((int(im.size[0]*scalingFactor),int(im.size[1]*scalingFactor)), Image.ANTIALIAS)
        fileName = f.split('\\')[-1]
        imResize.save(path + "/Out/" + fileName + ' resized_' + str(scalingFactor) + ".png" , 'PNG')

然而,当我运行它时,图像的大小实际上是增加而不是减少(正如我所料)。

例如。原图885x1130 466KB

enter image description here

输出图像796x1017 1.44 MB!

enter image description here

我在早期使用PNG时有一种非常类似的非直观体验,同时旋转它们并得到explanation about it here on Stackoverflow。但我无法让自己相信这也许是同一个问题。

任何线索?我可以做些什么来减少PNG的大小?如果需要,可以稍微降低质量。

1 个答案:

答案 0 :(得分:1)

您使用了Image.ANTIALIAS过滤器,这是一个高质量的下采样过滤器。

要缩小图像尺寸,您可以在保存图像时使用optimize=Truequality=90。喜欢 -

imResize.save(path + "/Out/" + fileName + ' resized_' + str(scalingFactor) + ".png" ,optimize=True,quality=90)

优化标记将对图像进行额外的传递,以找到尽可能减小其大小的方法。

现在要进一步缩小尺寸,您可以更改保存选项中的质量值。

我更喜欢质量85和optimize因为质量不会受到太大影响,文件大小要小得多。

希望这有帮助!

只是为了添加你的答案,这里列出了所有过滤器,以决定质量与执行速度等。

http://pillow.readthedocs.io/en/3.4.x/handbook/concepts.html#concept-filters