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

时间:2011-08-02 19:06:37

标签: imagemagick

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

这可能,请帮我一个例子=)

2 个答案:

答案 0 :(得分:71)

要将生成的图像限制为最大文件大小,可以使用命令行参数-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。


更新/澄清: 输出文件大小可能略低于或高于文件请求的大小。)

答案 1 :(得分:9)

jpegoptim工具(actual homepage适用于多个程序)对我来说效果更佳:

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),然后缩小文件大小。如果无法达到所需的文件大小范围,请选择较小的目标尺寸并重新启动(从原始图像,而不是首先缩小的图像)。