ImageMagick: 最大文件大小的缩放 JPEG 图像

我有一些 JPEG 图片,我想缩小。另一个要求是文件大小不能大于300kByte。

那可能吗,请帮我举个例子

39306 次浏览

要将生成的图像限制为最大文件大小,可以使用命令行参数 -define jpeg:extent=max_value,如下所示:

convert original.jpeg -define jpeg:extent=300kb output.jpg
convert original.jpeg -define jpeg:extent=300kb -scale 50% output.jpg
convert original.jpeg -define jpeg:extent=300kb [...other options...] output.jpg

注意,这并不总是能够匹配所需的 一模一样大小。您可能要求输出大小为40kb,其中输入为300kb,结果为48kb。


(< em > 更新/澄清: 输出文件大小可能比请求的文件大小稍低或稍高。)

Jpegoptim工具(实际网页适用于多个程序)更适合我:

jpegoptim -s -S8 *.JPG
  • -s表示去除所有元数据(EXIF、 JFIF、 XMP 等)
  • -S8意味着目标文件大小约为8 KiB

你可以通过运行两次来更好地处理它们,因为根据经验,大多数图像都比较小,而且是渐进的:

jpegoptim -s --all-progressive -S8 *.JPG; jpegoptim -s --all-normal -S8 *.JPG

jpegoptim通常会拒绝写一个增加大小的图像,所以这将给你最佳的质量/大小。

至于图像尺寸部分: 通常首先根据尺寸和比例来定义目标大小,只有那时定义目标 文件大小。这是因为,在显示图像时,理想情况下希望图像尺寸是最终显示尺寸的整数倍或小数,以使缩放更容易,甚至不必要。因此,首先缩放到目标维度(使用质量100,可能还有其他东西,比如4:4:4色度,当然还有 dct float) ,然后缩小文件。如果无法达到所需的文件大小范围,请选择较小的目标尺寸并重新启动(从原始图像开始,而不是首先缩小的那个)。