Redimensionar imagenes mayores que 1280x960px en batch - ssh
Una vez mas como comentaba en el post me encontre con que un usuario habia subido imagenes de gran tamaño por lo tanto cuando el Zoo (Joomla) intentaba redimensionar daba error de exceso de memoria. Se me vinieron 2 soluciones inmediatamente a la mente:
- 1. Aumentar la memoria ram de la cuenta.
- 2. Redimensionar las imagenes
Sin dudar por se un servidor que comparten varias cuentas, fui por la segunda opción. Cómo lo hice? Busqué algun comando que redimensione imagenes que sean mayores a un ancho mayor que 1280px (elegí este ancho porque era lo maximo que se mostraba en la web, podria haber sido 800px, 2000px, etc.). El comando que encontre fue:
# mogrify -resize '1280x960>' *.jpg
El comando anterior redimensiona (manteniendo la relacion de aspeco) las imagenes que tengan un ancho mayor que 1280px o 960px de alto a un ancho de 1280px o a un alto de 960px.
Con este comando ya podia solucionar mi problema, pero seguia teniendo otro inconveniente. Las imagenes no estaban todas en la misma ruta, si no que estaban en subcarpetas. Cómo lo resolví? con el comando "find" de la siguiente manera. Ya dentro de la ruta del usuario con el problema:
# cd /mijoomla/images/ # tar -czvf zoo.tar.gz zoo/ # cd zoo # find ./ -name "*.jpg" -exec mogrify -resize '1280x960>' -quality 100 {} \;
Con el comando "cd /mijoomla/images/" me ubique en la carpeta de las imagenes. Con el comando "tar -czvf zoo.tar.gz zoo" hice un backup de la carpeta zoo. Luego con "cd zoo" me ubiqué dentro de la carpeta zoo donde estaban las imagenes en cuestion. Por último con el comando "find ./ -name "*.jpg" -exec mogrify -resize '1280x960>' -quality 100 {} \;" ejecuté el script que redimensionó las imagenes. Con find busque las imagenes en formato .jpg recursivamente (en subcarpetas) y luego con mogrify si la imagen tenia una resolucion mayor que 1280x960 la redimensioné a 1280x960 (manteniendo la relacion de aspeco de la imagen original).
Con estos comandos, le ahorre a mi cliente tener que descargar las imagenes, redimensionarlas a una resolucion mas chica y tener que subirlas una por una. En 10 minutos como maximo, le resolvi el problema a mi cliente que si lo tendria que hacer "manualmente" hubiese tardado 1 hora o mas.
Espero que les sirva a ustedes y no se olviden siempre de hacer un backup por las dudas.