为什么执行“convert x.png y.png”命令会生成大小不同(以KB为单位)的图像?

4
我有几张图片,想通过调整它们的大小来将它们归一化到特定的比例。但是当我开始调整图像大小时,发现它们的体积(KB)比原始图像大得多。
我进一步检查了一下,只是简单地执行: convert x.png y.png 然后得到了一些差异。例如,在一个案例中,x.png 是143KB,y.png 是208KB。
由于我也在优化图像大小,所以我想知道为什么会出现这种情况,并有没有解决方法。
我正在使用Windows 7上的Imagemagick 6.6.4-Q16。
谢谢,Amit
编辑:
感谢建议,抱歉回复晚了!这是我尝试的方法和结果。原始图像大小为112KB。不带参数进行转换会得到169KB的图像。使用OptiPNG(PNGCrush对我无效)并设置-o7可以得到113KB的大小。然后我尝试对每个X值在0-99之间执行convert -quality X,并发现对于质量90,文件大小为116KB,因此OptiPNG更好。但是-当我使用convert -resize调整到较小的图像(按比例),我得到没有参数的199KB,最佳convert -quality X(x = 0)为196KB,OptiPNG也是196KB。
由于我将图像从377x2290调整为234x1419,预计文件应该更小,但是文件大小增加了75%。有什么想法吗?
谢谢!
编辑-附加图片+调整大小问题调查:
这里有三张图片的链接(查看标题):原始图片,简单ImageMagick转换后的图片和经过optipng处理后的相同输出图片。 http://picasaweb.google.com/101622787022351879933/ImageMagickProblem?feat=directlink 此外,我认为ImageMagick的调整大小选项可能存在问题。我进行了以下练习以隔离它: 对于1-100之间的每个x: convert a.png -resize x% a_x.png
正如预期的那样,图像的大小几乎从1%增加到100%。在40%和50%处略有下降。问题在于,从40%开始,输出图像大小超过原始图像大小。即使在每个输出文件上运行Optipng并使用-o7也无法纠正此问题。
你可以在下面的图表中看到这个实验的结果: http://picasaweb.google.com/lh/photo/fFL1W6SiUfFWhBqdUf3BZg?feat=directlink
3个回答

4

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

这是我做的:

convert -list filter > 1.txt

获取所有过滤器的列表。 然后,对于该列表中的每个x过滤器,我执行了以下操作:

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

我记录了文件大小,然后对每个文件执行了"optipng -o7"。
对于我的情况来说,这个图像的最佳过滤器是"Box":它是唯一一个通过optipng从112KB降至111KB,再到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!


4
PNG具有许多不同的设置,影响压缩效果,并且不能保证默认的ImageMagick设置选择特定的高效压缩方式。
最简单的解决方案是在ImageMagick处理完PNG后通过OptiPNG运行它们。默认情况下,它应该生成接近最佳压缩的内容,但您可以要求它进行更详尽的测试以达到绝对最小值。
关于您的编辑:这里必须注意的一件事是调整大小的方法。ImageMagick将在调整大小期间使用滤镜,这可能会对PNG图像的压缩量产生重大影响:毕竟,PNG是无损压缩,因此不能像JPEG那样进行逼近。
哪些滤镜适合您真正取决于您拥有的图像类型,但您可以尝试各种选项并查看哪个看起来不错。您可能需要为不同的图像使用不同的滤镜。

谢谢您的建议!请查看我对问题的编辑。 - AmitA
谢谢,我也会看一下过滤选项,也许这就是问题所在。 - AmitA
你能帮我解决这个问题吗?(https://dev59.com/F-o6XIcBkEYKwwoYTSsu) 我觉得很奇怪的是GD可以缩小PNG图像的大小,但Imagick却不能。 - Alix Axel
@Alix:我对ImageMagick并不是很了解,只知道一些零散的知识。除了已经回答的内容,我没有什么可以为那个问题做出的贡献。 - Michael Madsen

1

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


谢谢您的建议!请查看我对问题的编辑。 - AmitA
你能否将原始图像和缩小后的图像上传到某个地方? - fschmitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接