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

11

Tenho uma enorme galeria de 12 GB no servidor, cheia de imagens em várias subpastas. Esses arquivos são muito grandes e não são usados ​​em resolução total. Preciso redimensionar todas as imagens até 820px de largura (mantendo as proporções). Portanto, minha pergunta é: como posso criar algum tipo de script de rastreamento que redimensione todas as imagens maiores que 820px e as salve novamente substituindo o arquivo original?

Espero que você possa me ajudar :-) Agradecemos antecipadamente.

G-Gore
fonte
3
find . -name "*.jpg" -exec mogrify -resize 820x {} +fará todos eles; se você não quiser processar os "inferiores a 820px", existem algumas opções aqui .
don_crissti

Respostas:

13

As ferramentas do ImageMagick, converter ou mogrificar, farão o trabalho.

Você pode obtê-los através do seu gerenciador de pacotes ou do source / rpms aqui: http://www.imagemagick.org/script/binary-releases.php#unix

Uso básico:

$ mogrify -resize 820x *.jpg

Se você precisar de recursão:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

fonte
Não acho que "820 px de largura (mantendo proporções)" signifique "redimensionar para 820x820". É mais parecido com "820px de largura e qualquer que seja a proporção";) Além disso, isso não lida com recursividade.
precisa saber é o seguinte
1
Bom ponto. Editado!
Se você quiser fazê-lo para que ele só redimensiona se eles são maiores do que as dimensões definidas e ainda manter as proporções, você pode alterá-lo para isto: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex
2
Cuidado: Isso substituirá as imagens existentes.
Sudo
5

Use convertpara fazer o trabalho.

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

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

YoMismo
fonte
Como você modificaria esse comando para substituir a imagem original pela imagem reduzida, enquanto recorria com find?
Simon East