Como redimensionar em lote todas as imagens em uma pasta (incluindo subpastas)?

8

Tenho uma enorme galeria de 12 GB no servidor, repleta de imagens em várias subpastas. Esses arquivos são muito grandes e não são usados em resolução completa. Eu preciso redimensionar todas as imagens até 820px de largura (mantendo proporções). Então, minha pergunta é: como criar um script de rastreamento que redimensione todas as imagens maiores que 820 pixels e salve-as novamente sobrescrevendo o arquivo original?

Espero que você possa me ajudar :-) Agradeço antecipadamente.

    
por G-Gore 15.04.2015 / 15:07

2 respostas

9

As ferramentas ImageMagick convertem ou mgrify farão o trabalho.

Você pode obtê-los por meio do gerenciador de pacotes ou da fonte / rpms aqui: link

Uso básico:

$ mogrify -resize 820x *.jpg

Se você precisar de recursão:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;
    
por 15.04.2015 / 16:06
4

Use convert para fazer o trabalho.

convert -resize "1024x768>" origIMG destIMG redimensionará o origIMG para 1024x768 mantendo a proporção e redimensionando apenas se a imagem for maior que 1024, armazenando a nova imagem no destino. Depois disso, você pode mover o destIMG para o original.

Use um loop para percorrer todos os diretórios ou use find .

    
por 15.04.2015 / 15:14