ImageMagick:将图像转换为不同宽度的多个图像?

时间:2016-06-20 08:49:32

标签: imagemagick

我有一个包含许多高分辨率图像的文件夹(jpegjpgpng)。我想将每张图片转换为jpeg的图片,宽度为25001440640,然后将它们放在名为output的文件夹中。

我还想将图像的宽度添加为图像文件名的后缀(即red-ball.jpg - &gt; red-ball-640.jpegred-ball-1440.jpegred-ball-2500.jpeg)。< / p>

如何使用ImageMagick执行此操作?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

#!/bin/bash

# Make output directory
mkdir output

shopt -s nullglob
for f in *.jpg *.jpeg *.png; do
   base=${f%.*}
   ext=${f##*.}
   echo Converting $f to output/$base -2500 -1440 -640 $ext
   convert "$f" -resize 2500 -write "output/${base}-2500.${ext}" \
                -resize 1440 -write "output/${base}-1440.${ext}" \
                -resize 640 "output/${base}-640.${ext}"
done

示例输出

Converting test.jpg to output/test -2500 -1440 -640 jpg
Converting z.jpg to output/z -2500 -1440 -640 jpg
Converting z2.jpg to output/z2 -2500 -1440 -640 jpg
Converting z3.jpg to output/z3 -2500 -1440 -640 jpg
Converting z4.jpg to output/z4 -2500 -1440 -640 jpg
Converting z1.jpeg to output/z1 -2500 -1440 -640 jpeg
Converting a.png to output/a -2500 -1440 -640 png
Converting black.png to output/black -2500 -1440 -640 png
Converting c.png to output/c -2500 -1440 -640 png
Converting d.png to output/d -2500 -1440 -640 png
Converting f2.png to output/f2 -2500 -1440 -640 png
Converting gantt.1.png to output/gantt.1 -2500 -1440 -640 png
Converting globe.png to output/globe -2500 -1440 -640 png
Converting h.png to output/h -2500 -1440 -640 png
Converting output.png to output/output -2500 -1440 -640 png
Converting result.png to output/result -2500 -1440 -640 png
Converting result2.png to output/result2 -2500 -1440 -640 png

shopt -s null glob可确保如果目录中没有jpg个文件或png个文件,那么glob(*.jpg*.png)会展开什么都不是,而不是生成错误消息。更多信息here

ext=${f##*.}找到句点(句号)之后的最短内容,基本上是文件扩展名。这称为“bash参数替换”,我所知道的最佳描述是here

相关问题