script bash para redimensionar em massa usando o Imagemagick

1

Eu preciso converter um número muito grande de imagens JPEGs. essas imagens algumas são 720px × 480px, e algumas de 300x400 e algumas de 2000x1400 e algumas são de 1000x1000 etc.     Só preciso redimensionar essas imagens para 1000x1000 sem tocar nas imagens com 1000x1000

aqui eu tento fazer um pequeno script que calcula o tamanho total de cada imagem w x h, mas preciso adicionar uma declaração sobre ele que converta todas as imagens para 1000x1000 e excluir imagens que tenham tamanho de 1000x1000

for image in *.jpg; do
IFS=x 
read w h < <(identify "$image" | grep -oP '\d+x\d+(?=\+)')  
echo $((w*h)) "$image"
done
    
por jassim mishal 26.12.2015 / 13:27

1 resposta

1

Você pode usar o operador fx para filtrar imagens com base em altura & largura , por exemplo,

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

produzirá 1 se a imagem for exatamente 1000x1000 e 0 caso contrário.
Então você pode executar algo assim (ajuste o comando convert conforme suas necessidades):

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
    
por 26.12.2015 / 16:46