我有一些JPEG图片,我想缩小它们。另一个要求是文件大小不应大于300kByte。
这可能,请帮我一个例子=)
答案 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),然后缩小文件大小。如果无法达到所需的文件大小范围,请选择较小的目标尺寸并重新启动(从原始图像,而不是首先缩小的图像)。