ImageMagick:调整图像大小并减小文件大小

12

我正在使用 ImageMagick 来调整JPEG图片的尺寸和减小文件大小。

问题在于我不想降低图片质量。

我已经尝试了以下命令:

convert -resize 170x80 -resample 100x100 image1.jpg image2.jpg

=> 一张调整大小的图片但质量不佳。

convert -resize 170x80 -quality JPEG image1.jpg image2.jpg

=> 一个尺寸缩小且质量良好的图片,但文件大小保持不变。

convert -density 600 -resize 170x80 image1.jpg image2.jpg

=> 一个调整大小但质量很差的图片。

我不知道应该使用哪个选项。


使用JPEG格式进行图像压缩无论如何都会导致一定程度的质量损失。如果您需要绝对无损压缩,可以尝试其他格式,但是由于没有样本图像,我不知道该为您的用例推荐哪种选项。维基百科上的压缩文章列出了一些无损选项,您可以考虑一下:https://en.wikipedia.org/wiki/Image_compression1 - J. Kovacs
你的输入图像尺寸是多少?也许你可以发布你的输入图像并告诉我们你想要的输出文件大小。你看过使用“-define jpeg:extent={size}”将输出JPG写入给定文件大小吗?请参见https://imagemagick.org/Usage/formats/#jpg_write。注意:密度不会改变光栅图像的文件大小,它只影响输出的打印尺寸。注意:你的语法是错误的,但对于ImageMagick 6来说可能无关紧要。正确的语法应该先读取输入,然后设置,然后命令,最后输出。 - fmw42
1
如果您要将一个非常大的文件(WxH)缩小到170x80,那么由于调整大小过滤器中的跳变太大,您可能会失去很多质量。您可以尝试一系列步骤来缩小50% (-scale 50%)直到接近目标大小,然后再使用-resize 170x80。或者,您还可以尝试添加不同的-filter选项。请参见https://imagemagick.org/Usage/filter/ 和 https://imagemagick.org/Usage/filter/nicolas/。 - fmw42
如果您发布一个输入示例,我们可以提供更好的建议。 - fmw42
2个回答

15

quality 参数具有数字值。来自于-quality文档

对于 JPEG 和 MPEG 图像格式,quality 值从 1(最低图像质量和最高压缩)到 100(最佳质量但最不有效的压缩)。默认情况下,如果可以确定,则使用输入图像的预估质量,否则为 92。

您可以使用低于默认值 92 的 quality 值来减小文件大小,例如 72:

convert -resize 170x80 -quality 72 image1.jpg image2.jpg

很不幸,我已经尝试过了。虽然文件大小减小了,但图像质量并不好。 - Hamza Abdaoui
然后尝试75,然后是80,然后是85等,直到达到所需的大小质量比。 - Renat

6

我使用convertmogrify解决了这个问题:

convert -flatten -colorspace RGB myImage.jpg myImage.jpg 
&& 
mogrify -quality JPEG -geometry 170x80 myImage.jpg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接