我需要将大量图像转换为 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