python - ImageMagick:使用最大文件大小缩放 PNG 图像

标签 python image imagemagick python-imaging-library wand

如何缩放/优化/最小化输出 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/

相关文章:

python - 计算列表元素会产生错误的答案

C# WPF 从 SQL Server 数据库中检索图像,字节到图像

iPad Air 2 和 iPad Pro 的 iOS 图像文件名

php - 上传 jpg/png,转换为 pdf 并使用 PHP 保存?

python - Pandas:列中第一个和最后一个数据点为 NaN 的插值

python -\r 在 python 中破坏变量赋值

python - 如何分解连续每个文档的顶部单词; Pandas 数据框

css - Html/CSS 消失的 div 背景

image-processing - 使用ImageMagick自动调整大小叠加两个图像

animation - 以编程方式生成 .mov 或 .flv 视频文件的最佳开源框架是什么?