ImageMagick:缩放PNG图像,文件大小最大

时间:2017-08-01 07:20:11

标签: python image imagemagick python-imaging-library wand

如何缩放/优化/最小化输出 PNG 图像,使其低于特定的最大文件大小? (输入源是各种 - PDF,JPEG,GIF,TIFF ......)

我在许多地方看过,但无法找到这个问题的答案。

在ImageMagick中, JPEG 输出可以使用extent执行此操作(请参阅例如ImageMagick: scale JPEG image with a maximum file-size),但似乎并不等同于其他文件格式例如PNG。

我可以在循环中使用Wand或PIL(python的首选项),直到filesize低于某个值,但是对于1000s的图像,这会产生很大的I / O开销,除非有预测/的方式估计文件大小而不先写出来。也许这是唯一的选择。

我还可以在python中包装各种(macOS)命令行工具。

此外,我只想在绝对必要的情况下进行任何压缩(源代码主要是文本),这样就可以选择压缩算法。

感谢您的帮助。

PS其他相关问题:

Scale image according a maximum file size

Compress a PNG image with ImageMagick

python set maximum file size when converting (pdf) to jpeg using e.g. Wand

编辑: https://stackoverflow.com/a/40588202/1021819也非常接近 - 尽管那里的确切代码(不可避免地?)会对如何减少文件大小做出一些选择(resize在这种情况下)。如果没有多维搜索,也许没有通用的方法。

另外,由于输入文件是PDF,这甚至可以用PIL完成吗?第一个选择是光栅化,我一直在使用Wand。

https://stackoverflow.com/a/34618887/1021819也很有用,因为它使用Wand,因此将该操作放在binary-chop循环中似乎是一种前进的方式。

1 个答案:

答案 0 :(得分:0)

使用PNG,压缩方法和视觉外观没有折衷,因为PNG是无损的。只需使用最小的文件 我的" pngcrush"申请," optipng"," zopflipng"等等。

如果您需要的文件比任何可以生成的文件小,请尝试将颜色数减少到255或更少,这将允许PNG编解码器生成索引颜色的PNG(颜色类型3),大约为1 / 3 RGB RGB PNG的文件大小。你可以使用ImageMagick" -colors 255"选项来做到这一点。但是,我推荐" pngquant"申请;在大多数情况下,它比IM做得好。