Imagemagick을 사용하여 일괄 크기 조정을 위한 Bash 스크립트

Imagemagick을 사용하여 일괄 크기 조정을 위한 Bash 스크립트

많은 수의 이미지를 JPEG로 변환해야 합니다. 이러한 이미지 중 일부는 720px × 480px, 일부는 300x400, 일부는 2000x1400, 일부는 1000x1000 등입니다. 1000x1000으로 이미지를 건드리지 않고 이 이미지의 크기를 1000x1000으로 조정하면 됩니다.

여기서는 각 이미지(wxh)의 전체 크기를 계산하는 작은 스크립트를 만들려고 합니다. 하지만 모든 이미지를 1000x1000으로 변환하고 1000x1000 크기의 이미지를 제외하려면 if 문을 추가해야 합니다.

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

관련 정보