我喜欢 imagemagick 的命令行选项。Mogrify 非常适合调整图像大小和更改质量,这是我最常用的。但是,我注意到文件大小通常比应有的要大。特别是对于小图像。例如,我有一张常规的 640px(宽度)照片,我将其更改为质量 80 和宽度 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
将删除您传递的任何文件的元数据mogrify
或magick 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
调用的输出文件大小,也请仔细检查压缩!