Gira todas as imagens em um diretório que seja de uma geometria específica

2

Eu gostaria de rotacionar todas as imagens em um diretório que seja de uma geometria específica. Posso usar o ImageMagick para isso? Se sim, você poderia me ajudar com o código do prompt de comando?

    
por Maynard 31.08.2016 / 00:17

1 resposta

1

Algo como o seguinte deve atender às suas necessidades:

for i in *.jpg
do
if [ $(identify -format "%[fx:w]x%[fx:h]\n" "$i") = 1920x1080 ]
then
convert "$i" -rotate 90 "${i%.jpg}_rotated.jpg"
fi
done

Altere simplesmente a configuração 1920x1080 para seu tamanho desejado e copie e cole o snippet inteiro em uma janela do Terminal no diretório que contém os arquivos de imagem ...

Alguma explicação da sintaxe ...

Primeiro, há a estrutura :

  1. A base para este snippet de código é o for loop que localiza todos os arquivos jpg em um determinado diretório:

    for i in *.jpg
    do
    <Insert command here....>
    done
    

    Mas algumas exclusões precisam ser feitas antes que um comando seja executado e, para isso, aninhemos uma instrução condicional usando if ...

  2. A segunda estrutura é uma declaração if que contém o test para o tamanho de jpg necessário:

    if <Insert test here...>
    then
    <Insert command here...>
    fi
    

Em seguida, o loop for e a instrução if são aninhados e adicionados à mistura:

  1. O teste apropriado , que procura por jpgs que são de tamanho necessário:

    [ $(identify -format "%[fx:w]x%[fx:h]\n" "$i") = 1920x1080 ]
    
  2. O comando apropriado , que gira esses arquivos jpg em 90 graus:

    convert "$i" -rotate 90 "${i%.jpg}_rotated.jpg"
    

E então a mágica do Bash funciona:)

    
por andrew.46 31.08.2016 / 04:13