如何缩放/优化/最小化输出 PNG 图像,使其低于某个最大文件大小? (输入源多种多样 - PDF、JPEG、GIF、TIFF...)
我查了很多地方,但找不到这个问题的答案。
在 ImageMagick 中,JPEG 输出可以通过 extent
执行此操作(例如 ImageMagick: scale JPEG image with a maximum file-size ),但似乎没有其他文件格式的等效项,例如巴布亚新几内亚。
我可以在循环中使用 Wand 或 PIL(首选 python),直到文件大小低于某个值,但是对于 1000 个图像,这将产生很大的 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,因此将该操作放在二进制-chop 循环中似乎是一种前进的方式。
最佳答案
使用 PNG 时,无需权衡压缩方法和视觉外观,因为 PNG 是无损的。只需使用尽可能小的文件 我的“pngcrush”应用程序、“optipng”、“zopflipng”等。
如果您需要的文件比这些文件所能生成的文件小,请尝试将颜色数量减少到 255 种或更少,这将允许 PNG 编解码器生成大约 1 的索引颜色 PNG(颜色类型 3) RGB PNG 的文件大小的/3。您可以使用 ImageMagick 的“-colors 255”选项来执行此操作。不过,我推荐使用“pngquant”应用程序;在大多数情况下,它比 IM 做得更好。
关于python - ImageMagick:使用最大文件大小缩放 PNG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431366/