使用 Imagemagick 批量调整大小的 bash 脚本

使用 Imagemagick 批量调整大小的 bash 脚本

我需要将大量图像转换为 JPEG。这些图像有些是 720px × 480px,有些是 300x400,有些是 2000x1400,有些是 1000x1000 等等。我只需要将这些图像的大小调整为 1000x1000,而无需触摸具有 1000x1000 的图像

在这里,我尝试制作一个小脚本,计算每个图像 wxh 的总大小,但我需要在其上添加 if 语句,将所有图像转换为 1000x1000 并排除具有 1000x1000 大小的图像

for image in *.jpg; do
IFS=x 
read w h < <(identify "$image" | grep -oP '\d+x\d+(?=\+)')  
echo $((w*h)) "$image"
done

答案1

您可以使用fx运算符根据以下条件过滤图像高度&宽度例如

identify -format '%[fx:(h=1000 && w=1000)]\n' image.jpg

1如果图像准确1000x1000,则输出,否则输出0
所以你可以运行这样的东西(convert根据你的需要调整命令):

for image in ./*.jpg; do
identify -format '%[fx:(h=1000 && w=1000)]\n' "$image" | grep -q 0 \
&& convert -resize 1000x1000 "$image" "${image%.*}"-converted.jpg
done

相关内容