Como posso redimensionar imagens em subpastas com essas condições?

1

Digamos que eu tenha uma pasta com muitas subpastas nela. Cada uma dessas subpastas contém muitas imagens.

Desejo redimensionar essas imagens em cada subpasta com as seguintes condições:

  • Se a altura da imagem for menor que 1000 pixels, faça anotações.
  • Se o tamanho da imagem estiver entre 1001 a 2500 pixels, redimensione-a para 70%.
  • Se o tamanho da imagem estiver entre 2501 a 3000 pixels, redimensione-a para 50%.
  • Se o tamanho da imagem for maior que 3000 pixels, redimensione-a para 30%.
  • as novas imagens substituem as antigas.

Normalmente, posso fazer isso com algumas imagens, observando as informações da imagem uma a uma e usando o comando mogrify, mas dessa vez tenho muitas subpastas. Como sou um novo usuário do linux, qualquer ajuda seria apreciada.

    
por PorteM 13.03.2018 / 12:35

3 respostas

0

Você encontrará aqui: link alguns detalhes em ferramentas de linha de comando oferecidas pelo ImageMagick.

Então, para executar o trabalho em uma única foto, gostaria de:

  • use a ferramenta de identificação para ler metadados de imagens, por exemplo:

    $ identify /tmp/p1.jpg /tmp/p1.jpg JPEG 1487x925 1487x925 + 0 + 0 8 bits sRGB 314106B 0,000u 0: 00,000

  • interpretar a saída para extrair as dimensões 1487x925

  • aplique minhas regras para criar um comando de conversão.

Um loop baseado nos resultados do comando "find" permitiria repetir isso para uma ou mais pastas.

    
por 13.03.2018 / 13:21
0

você pode usar da caixa de ferramentas ImageMagic "identificar" para ler a resolução da imagem e "converter" para converter imagens. Algo parecido com isto:

MIN_RES=100
MAX_RES=500
for i in *.jpg; do
    YRES=$(identify -verbose $i|grep Geometry: |cut -d 'x' -f2 |sed 's|+.*||g')
    if [ $YRES -gt $MIN_RES ] && [ $YRES -lt $MAX_RES ]; then

        echo "Found: $i with y-res: $YRES";

        # convert
        convert -resize 50% $i $i;

    fi
done
    
por 13.03.2018 / 13:24