使用 mogrify 调整大小时减小文件大小

使用 mogrify 调整大小时减小文件大小

我喜欢 imagemagick 的命令行选项。Mogrify 非常适合调整图像大小和更改质量,这是我最常用的。但是,我注意到文件大小通常比应有的要大。特别是对于小图像。例如,我有一张常规的 640px(宽度)照片,我将其更改为质量 8​​0 和宽度 80px:

mogrify -quality 80 -resize 80 file.jpg

效果很好,我的图像大小被调整,质量也变为 80。但是,文件大小约为 40Kb。对于如此小的图像来说,这太大了!当我使用 mtPaint,打开文件并保存时(不更改任何内容,只需按 CTRL+O、CTRL+S),文件大小会减少 95% 以上,降至不到 2Kb!我经常看到这种情况。

出了什么问题?

答案1

我找到了答案……它就在“元数据”中!显然,每个图像的重量很容易达到约 18 Kb,因此在原始图像中您可能不会注意到这一点,但在微小的调整大小中,这意味着 18 Kb + 2 Kb = 20 Kb 总文件大小。通过执行以下操作,它们显着增加:

mogrify -strip file.jpg

答案2

TL;DR:-compress除了之外-strip,还指定 + 压缩格式,以保持输入文件的相同压缩格式并减小文件大小。

问题

正如 user6019 提到的,-strip将删除您传递的任何文件的元数据mogrifymagick mogrify(>= ver. 7)。

但是,当我尝试这个命令(它是上面的一个版本)时:

magick mogrify -strip -density 535 -debug cache *.tif

我的输出文件的大小仍然没有减小。

版本信息

操作系统:Windows 11 家庭版,版本 21H2

即时通讯:7.1.0-19 Q16-HDRI x64 2021-12-22

解决方案

在检查了 之前和之后文件的详细信息后mogrify,我注意到mogrify删除了输入文件的压缩格式,留下了完全未压缩的文件。结果,所有文件大小都放大了约 400 倍(输入 = 59 KB;输出 = 26,172 KB)。

读完本文后邮政,ImageMagick 似乎根据压缩格式是否“启用”来以不同的方式处理 LZW 压缩文件。我使用以下代码行明确强制使用压缩格式(在编译上述命令之后):

magick mogrify -compress LZW *.tif

并且文件大小恢复到使用 IM 处理之前的大小(即文件大小减小)。

因此,将来,如果人们担心以下mogrify或甚至convert/magick调用的输出文件大小,也请仔细检查压缩!

相关内容