我运行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)
相反,如果我们 在图像文件名之前指定质量设置,它将以更大的压缩率保存图像,减少文件大小。