Skip to main content

Redimensionar imagenes mayores que 1280x960px en batch - ssh

Alejo Sotelo - Developer
Alejo A. Sotelo - @alejoasotelo
Publicado el 01 Diciembre 2016

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.

Más artículos de Alejo A Sotelo - Desarrollo Web

20 Noviembre 2024

Problemas al guardar Configuración en Joomla

Introducción: Cuando cambiamos de servidor un sitio web con Joomla, es común encontrarnos con pequeños problemas técnicos que, aunque frustrantes, pueden resolverse con algo de paciencia y conocimiento. En este artículo, quier...
16 Agosto 2024

Cómo Resolver la Lentitud de phpMyAdmin en un VPS de Donweb con Ferozo

Te pasó alguna vez que intentaste explorar con phpMyAdmin una base de datos con tablas InnoDB y te andaba extremadamente lento? Si es así, abajo te paso una posible solución. Introducción: Hace poco me encontré con un problem...
19 Julio 2024

Cómo detuve un ataque de Bots en un Formulario de Contacto sin reCAPTCHA

Hoy quiero compartir una experiencia reciente que tuve con un ataque de bots a un formulario de contacto en uno de mis proyectos. Este incidente me llevó a profundizar en los logs de acceso y a implementar una solución rápida p...
20 Diciembre 2022

Liberar memoria ram en servidor CentOS

Cómo liberar memoria RAM en un servidor CentOS En este tutorial, te explicaré cómo liberar memoria RAM en un servidor CentOS utilizando comandos simples desde una sesión SSH. Sigue estos pasos para optimizar el rendimiento de ...