Imagemagick -quality 85 不起作用

Lan*_*nes 3 imagemagick

我运行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
Run Code Online (Sandbox Code Playgroud)

尺寸不会缩小。然而,如果我在 Gimp 中打开图像并以 85% 的质量保存,尺寸确实会缩小:

ls -lah Screenshot.jpg
-rw-rw-r--.  1 USER GROUP 135K May 24 12:11 Screenshot.jpg
Run Code Online (Sandbox Code Playgroud)

为什么 ImageMagick 不将 JPEG 图像压缩到 85%?我在 Fedora 上使用 ImageMagick-6.6.4.1-15.fc14.i686。

小智 5

看起来修饰符参数(-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; 
Run Code Online (Sandbox Code Playgroud)

因此,我们第一次运行 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; 
Run Code Online (Sandbox Code Playgroud)

相反,如果我们 在图像文件名之前指定质量设置,它将以更大的压缩率保存图像,减少文件大小。