我运行mogrify
将 JPEG 图像压缩到 85% 质量:
$ ls -lah Screenshot.jpg
-rw-rw-r--. 1 USER GROUP 440K May 24 12:10 Screenshot.jpg
$ mogrify -compress JPEG Screenshot.jpg -quality 85
$ ls -lah Screenshot.jpg
-rw-rw-r--. 1 USER GROUP 441K May 24 12:10 Screenshot.jpg
尺寸并没有缩小。然而,如果我在 Gimp 中打开图像并以 85% 的质量保存,尺寸确实会缩小:
ls -lah Screenshot.jpg
-rw-rw-r--. 1 USER GROUP 135K May 24 12:11 Screenshot.jpg
为什么 ImageMagick 不将 JPEG 图像压缩到 85%?我在 Fedora 上使用 ImageMagick-6.6.4.1-15.fc14.i686。
答案1
看起来修饰符参数(-quality NN)和文件名的相对顺序在这里确实很重要,几乎就像它以一种非常非常简单的方式做它所告诉的那样。
: cez@rhk; !ls
ls -lh Screenshot.jpg
-rw-r--r-- 1 cez staff 1.3M 5 24 19:20 Screenshot.jpg
: cez@rhk; mogrify -verbose -monitor -compress JPEG Screenshot.jpg -quality 10
load image[Screenshot.jpg]: 1079 of 1080, 100% complete
Screenshot.jpg JPEG 1920x1080 1920x1080+0+0 8-bit DirectClass 1.335MB 0.120u 0:05.680
save image[Screenshot.jpg]: 1079 of 1080, 100% complete
Screenshot.jpg JPEG 1920x1080 1920x1080+0+0 8-bit DirectClass 1.327MB 0.240u 0:02.960
: cez@rhk;
因此,第一次运行 mogrify 时,我们指定-quality
参数后文件名,因此它不知道质量说明符应该应用于该图像。
: cez@rhk;mogrify -verbose -monitor -compress JPEG -quality 85 Screenshot.jpg
load image[Screenshot.jpg]: 1079 of 1080, 100% complete
Screenshot.jpg JPEG 1920x1080 1920x1080+0+0 8-bit DirectClass 1.341MB 0.100u 0:00.119
save image[Screenshot.jpg]: 1079 of 1080, 100% complete
Screenshot.jpg JPEG 1920x1080 1920x1080+0+0 8-bit DirectClass 459KB 0.190u 0:00.200
: cez@rhk;
相反,如果我们指定质量设置前 图像文件名,它将以更多压缩保存图像,从而减小文件大小。
答案2
不完全相同的问题,但我在这个问题上坚持了很长时间。事实证明,大小并没有缩小,因为所有文件大小都在元数据中,并且添加到-strip
命令中会减少大小。