¿Cómo cambiar el tamaño de todas las imágenes en una carpeta (incluidas las subcarpetas)?

11

Tengo una enorme galería de 12 GB en el servidor, llena de imágenes en varias subcarpetas. Esos archivos son demasiado grandes y no se usan en resolución completa. Necesito cambiar el tamaño de todas las imágenes a 820 px de ancho (manteniendo las proporciones). Entonces mi pregunta es: ¿cómo puedo crear algún tipo de script de rastreo que redimensione todas las imágenes más grandes que 820px y las guarde sobrescribiendo el archivo original?

Espero que puedan ayudarme :-) Gracias de antemano.

G-Gore
fuente
3
find . -name "*.jpg" -exec mogrify -resize 820x {} +los hará todos; Si no desea procesar los de "menos de 820 px", hay algunas opciones aquí .
don_crissti

Respuestas:

13

Las herramientas ImageMagick convert o mogrify harán el trabajo.

Puede obtenerlos a través de su administrador de paquetes o la fuente / rpms aquí: http://www.imagemagick.org/script/binary-releases.php#unix

Uso básico:

$ mogrify -resize 820x *.jpg

Si necesitas recurrencia:

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

fuente
No creo que "820 px de ancho (manteniendo proporciones)" signifique "cambiar el tamaño a 820x820". Es más bien como "820 px de ancho y cualquiera que sea la proporción es alta";) Además, esto no maneja la recursividad.
Erathiel
1
Buen punto. Editado!
Si desea hacerlo de modo que solo cambie su tamaño si son más grandes que las dimensiones establecidas y aún mantienen las proporciones, puede cambiarlo a esto: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex
2
Precaución: Esto sobrescribirá sus imágenes existentes.
sudo
5

Úselo convertpara hacer el trabajo.

convert -resize "1024x768>" origIMG destIMGcambiará el tamaño de origIMG a 1024x768 manteniendo la relación de aspecto y redimensionando solo si la imagen es mayor que 1024, almacenando la nueva imagen en destIMG. Después de eso, puede mover el destIMG al original.

Use un bucle para viajar a través de todos sus directorios o use find.

YoMismo
fuente
¿Cómo modificaría este comando para sobrescribir la imagen original con la reducida, mientras se repite con find?
Simon East