如何在PIL中减少png图像文件大小

时间:2012-08-13 08:02:58

标签: python django python-imaging-library

我已经使用PIL将jpg / bmt转换并调整为png ..我可以轻松调整大小并转换为png,但文件大小是新图像太大

im=Image.open(p1.photo)
im_resize = im.resize((400, 400), Image.ANTIALIAS)    # best down-sizing filter
im.save(str(merchant.id)+'_logo.'+'png')

我还需要做些什么来减少图像尺寸?

2 个答案:

答案 0 :(得分:3)

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 - 这些可以随着你的需要变小,交易规模的质量。

答案 1 :(得分:0)

您可以使用其他工具,例如PNGOUT