如何在PIL中缩小PNG图像文件大小

4

我使用PIL将JPG/BMP文件转换并调整大小为PNG格式。我可以轻松地将其调整大小并转换为PNG,但是新图像的文件大小太大了。

im = Image.open('input.jpg')
im_resize = im.resize((400, 400), Image.ANTIALIAS)  # best down-sizing filter
im.save(`output.png')

我需要怎么做才能减小图片文件的大小?

可能是使用PIL优化.png图像的重复问题 - Martijn Pieters
同时:如何使用PIL减小图像文件大小 - Martijn Pieters
1
最后但同样重要的是,在保存时设置“optimize”选项:im.save(filename, optimize=True) - Martijn Pieters
2个回答

4
PNG图像仍然需要保存图像上每个像素的所有数据,因此压缩它们的程度有限。由于您的400x400图像将用作“缩略图”,因此可以进一步减小它的大小,一种方法是使用索引模式:
im_indexed = im_resize.convert(“P”) im_resize.save(...)
*等待* 刚刚看到您示例代码中的错误: 您正在保存原始图像,而不是调整大小后的图像:
im=Image.open(p1.photo)
im_resize = im.resize((400, 400), Image.ANTIALIAS)    # best down-sizing filter
im.save(str(merchant.id)+'_logo.'+'png')

你应该做什么:

im_resize.save(str(merchant.id)+'_logo.'+'png')

你只是在保存原始图像,这就是为什么它看起来很大的原因。也许你不需要使用索引模式。
另外一件事情:索引模式图像可能看起来相当差 - 如果你需要的话,一个更好的解决办法可能是将较小的尺寸保存为.jpg而不是.png - 这样可以根据需要缩小,以牺牲质量换取大小。

0

你可以使用其他工具,如PNGOUT


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接