【问题标题】:Why does "convert x.png y.png" creates an image with a different size (KB)?为什么“convert x.png y.png”会创建不同大小 (KB) 的图像?
【发布时间】:2010-09-24 19:22:14
【问题描述】:

我有一些图像,我试图通过调整它们的大小将它们标准化到一定的比例。 当我开始调整图像大小时,我注意到它们的体积 (KB) 变得比原始图像大得多。

我通过简单的操作进一步检查了它: 转换 x.png y.png 并且有所不同。例如。在一种情况下,x.png 为 143KB,y.png 为 208KB。

由于我也在优化图像大小,我想知道是否有人知道为什么会出现这种情况以及解决此问题的任何建议。

我在 Windows 7 上使用 Imagemagick 6.6.4-Q16。

谢谢,阿米特

编辑:

谢谢大家的建议,抱歉回复晚了!这是我尝试做的,这是结果。原始图像为 112KB。在没有参数的情况下进行转换会产生 169KB 的图像。在其上使用 OptiPNG(PNGCrush 对我不起作用)和 -o7 结果为 113KB。然后我尝试对 0-99 之间的每个 X 进行 convert -quality X,我发现对于质量 90,我实现了 116KB 的文件大小,所以 OptiPNG 更好。但是 - 当我将 -resize 转换为较小的图像(按比例)时,我得到一个没有参数的 199KB,最佳转换质量 X (x=0) 为 196KB,OptiPNG 为 196KB。 当我希望文件更小时,文件大小增加了 75%,因为我将图像的大小从 377x2290 调整为 234x1419 大小为 35%。有什么想法吗?

谢谢!

编辑 - 附加图片 + 调查的调整大小问题:

这里是三张图片的链接(看标题):原图,简单 ImageMagick 转换后的图像,以及 optipng 后的相同输出图像。 http://picasaweb.google.com/101622787022351879933/ImageMagickProblem?feat=directlink

另外,我认为 ImageMagick 的调整大小选项可能存在问题。我做了以下练习来隔离它: 对于 1-100 之间的每个 x: 转换 a.png -resize x% a_x.png

正如预期的那样,图像的大小几乎不断地从 1% 增加到 100%。 40%和50%略有下降。问题是从 40% 开始,输出图像大小会绕过原始图像大小。只有当您达到 100% 时,图像大小才会大幅下降到原始大小(实际上稍微大一点,根据我的第一次编辑 - 169KB 而不是 112KB,Optipng 之后是 113KB)。

即使在每个输出文件上使用 -o7 运行 Optipng 也不能纠正此问题。

您可以在下图中看到该实验的结果: http://picasaweb.google.com/lh/photo/fFL1W6SiUfFWhBqdUf3BZg?feat=directlink

【问题讨论】:

    标签: imagemagick


    【解决方案1】:

    PNG 有许多不同的设置会影响压缩,并且不能保证默认的 ImageMagick 设置会选择特定的有效压缩。

    最简单的解决方案是在 ImageMagick 完成它们之后通过OptiPNG 运行你的 PNG。默认情况下,它应该生成接近最佳压缩率的东西,但您可以要求它进行更详尽的测试以达到绝对最小值。

    关于您的编辑:您必须注意的一件事是调整大小的方法。 ImageMagick 将在调整大小时使用filter,这会对您使用 PNG 压缩图像的程度产生很大影响:毕竟 PNG 是无损压缩,因此它不能像 JPEG 那样近似。

    哪些过滤器适合您,实际上取决于您拥有哪种图像,但您可以尝试各种选项,看看哪些看起来不错。您可能需要针对不同的图像使用不同的过滤器。

    【讨论】:

    • 感谢您的建议!请查看我对问题的编辑。
    • 谢谢,我也看看过滤器选项,也许这就是问题所在。
    • 你能帮我解决这个问题吗(stackoverflow.com/questions/5818603/…)?我觉得奇怪的是 GD 可以减小 PNG 图像的大小,但 Imagick 不能。
    • @Alix:我对 ImageMagick 知之甚少,只知道一些零碎的东西。除了答案中已经说过的内容之外,我没有看到任何我可以为这个问题做出贡献的东西。
    【解决方案2】:

    好的,问题出在 Michael 建议的过滤器上。

    这是我所做的:

    convert -list filter > 1.txt
    

    获取所有过滤器的列表。 然后,对于该列表中作为过滤器的每个 x,我做了:

    convert -filter x -resize 234x1419 a.png b_x.png
    

    我记录了文件大小,然后对每个文件执行“optipng -o7”。

    在我的情况下,这张图片的最佳过滤器是“Box”:它是唯一一个实际从 112KB 减少到 111KB,然后通过 optipng 减少到 81KB 的过滤器。

    我认为有趣的是,在所有这些过程之后,只有 Box 过滤器实际上减小了图像的大小,尽管在调整大小过程之后它们都具有更少的像素。

    顺便说一句:注意以下陷阱

    convert -filter Box -resize 234x1419 a.png a_box.png
    

    生成一个 112KB 的图像,可以压缩到 81KB,如上所述。然而:

    convert a.png -filter Box -resize 234x1419 a_box.png
    

    生成 199KB 的图像!

    【讨论】:

      【解决方案3】:

      我猜输入图像不是由 ImageMagick 创建的?可能 ImageMagick 只是没有最佳压缩,或者输入是调色板图像,而 ImageMagick 创建了 RGB 图像。在前一种情况下,您可以在缩小的图像上运行 pngcrush 以减小尺寸。

      【讨论】:

      • 感谢您的建议!请查看我对问题的编辑。
      • 你能把原图和缩小后的图片上传到某个地方吗?
      猜你喜欢
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多