我喜欢 imagemagick 的命令行选项。Mogrify 非常适合调整图像大小和改变质量,这是我最常用的。但是,我注意到文件大小通常大于应有的大小。尤其是小图像。例如,我有一张普通的 640 像素(宽度)照片,我将其更改为质量 80 和 80 像素的宽度:
mogrify -quality 80 -resize 80 file.jpg
效果很好,我的图像被调整大小,质量更改为 80。但是,文件大小约为 40Kb。对于这么小的图像,那是巨大的!当我使用 mtPaint 并打开文件并保存它(不更改任何内容,只是 CTRL+O、CTRL+S)时,文件大小减少了 95% 以上,小于 2Kb!我见过这种情况经常发生。
出了什么问题?
我找到了答案……它在“元数据”中!显然,这很容易每张图像重约 18 Kb,因此在原始文件中您可能不会注意到这一点,但在微小的调整大小中,这意味着 18 Kb + 2 Kb = 20 Kb 总文件大小。他们通过以下方式显着增加:
mogrify -strip file.jpg
TL;DR:指定
-compress
+ 压缩格式,除了-strip
,以保持输入文件的相同压缩格式并减小文件大小。问题
正如 user6019 所提到的,
-strip
将删除您通过的任何文件的元数据mogrify
或magick mogrify
(> = 版本 7)。但是,当我尝试这个命令时,它是上面的一个版本:
magick mogrify -strip -density 535 -debug cache *.tif
,我的输出文件的大小仍然没有减少。
版本信息
操作系统:Windows 11 家庭版,版本 21H2
IM: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
调用,也要仔细检查压缩!