bash调整图像尺寸以适合特定尺寸

时间:2017-01-06 09:08:50

标签: bash image image-processing imagemagick

我到处搜索但找不到答案。 我想准确输出50Kb的文件夹的所有图像,并保持原始的宽高比。

我尝试ImageMagick并调整为250x250,但它对我不起作用,它的作用是改变第一个维度并调整另一个维度,因此输出图像的大小不同。

for image in `ls $@*.jpg`; do
  mogrify "${image}" -resize 250x250 "${image}"
done

怎么做?感谢

1 个答案:

答案 0 :(得分:0)

更新了答案

如果您希望图像的文件大小限制为50kB,请使用:

convert input.jpg -define jpeg:extent=50KB output.jpg

原始答案

使用mogrify,但请注意它会覆盖您的所有图片:

mogrify -resize 250x250! *.jpg

一般情况下,使用mogrify时,我喜欢使用-path选项为结果指定输出目录,这样可以避免原件被覆盖:

mkdir results
mogrify -path results ...

如果您在调整大小后添加!,即使它会扭曲图片的形状,也会强制调整大小,您的脚本将会有效。

如果你想要一种与Python类似的方法,我写了一个非常好的答案here。它对满足最大尺寸要求的JPEG质量进行二进制搜索。