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

2024-09-29 23:19:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将文件夹中的所有图像缩小到各自大小的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的大小?如果需要的话,质量会有一点损失。在


Tags: path图像imageimportsizepngosfilename
1条回答
网友
1楼 · 发布于 2024-09-29 23:19:03

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

要减小图像的大小,可以在保存图像时使用optimize=True和{}。就像-

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

optimize标志将对图像执行额外的传递,以找到尽可能减小图像大小的方法。在

现在要进一步减小大小,可以在“保存选项”中更改“质量”值。在

我更喜欢使用optimize的quality 85,因为质量不会受到太大影响,而且文件大小要小得多。在

希望这有帮助!在


为了补充您的答案,这里列出了所有过滤器,以决定质量与执行速度等

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

相关问题 更多 >

    热门问题