Redimensionar imagenes mayores que 1280x960px en batch - ssh


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


Soy Desarrollador Mercado Pago Certificado

02 Octubre 2020
Para Online Payments Checkout Pro. Esta semana participé del "Mercado Pago Developer Partner Program" y luego de realizar el examen correspondiente fuí aprobado para ser "Mercado Pago Certified Developer for Online Payments ...

Calculadora Compuesta de Cauciones - Proyecto personal

17 Marzo 2020
Bueno, encaré este proyecto viendo que IOL (InvertirOnline) daba un excel para el cálculo estimativo de las ganancias para las cauciones y siempre por mi cuenta calculaba las ganancias haciendo interés compuesto. Por ejemplo s...

Libreria PHP para Andreani REST

24 Agosto 2019
Qué es esto? Es una librería php para conectar con la Api REST de Andreani. Creé la librería porque me ví casi forzado a migrar a la Api REST de Andreani. Hice un módulo en su momento, y sigo manteniendo, para Prestashop de And...

Liberar memoria ram en servidor CentOS

01 Agosto 2019
Cómo hacemos para liberar la memoria ram de nuestro servidor CentOS? Bueno, entramos por ssh al servidor y luego ejecutamos los siguientes comandos: free -m sudo sync && sudo sysctl -w vm.drop_caches=3 free -m ...

Agregar reCaptcha en Joomla 1.5

03 Abril 2019
Para agregar reCaptcha al contacto en Joomla 1.5 (SOLO J1.5) instalamos el plugin reCAPTCHAIntegrator y luego copiamos el archivo /components/com_contact/views/contact/tmpl/default_form.php a /templates/NOMBRE_TEMPLATE/html/com...

Configurar DKIM con Exim en Centos 7

13 Febrero 2019
Vamos a configurar DKIM con Exim en CentOS 7. Primero vamos a generar las claves privada y pública con openssl, sin utilizar opendkim ni nada parecido. Conectamos vía SSH al servidor en cuestión y ejecutamos: openssl genrs...