"Si tú no trabajas por tus sueños, alguien te contratará para que trabajes por los suyos”

Steve Jobs

Afiliado
Dominios3Euros

Introducción

En los proyectos donde trabajamos con Joomla + VirtueMart, una de las tareas menos agradecidas —pero absolutamente necesarias— es mantener las imágenes optimizadas. Cuando el catálogo crece, no solo necesitamos reducir peso, sino asegurarnos de que cada archivo JPEG incluya una miniatura válida dentro de sus metadatos, ya que VirtueMart depende de ella para funcionar correctamente.

Hace unas semanas comencé a automatizar este proceso, porque subir imágenes “tal cual” suponía que, al entrar en el gestor de productos, VirtueMart generaba advertencias, no reconocía ciertas miniaturas o directamente se negaba a mostrar las previsualizaciones. Todo esto, sumado a que las imágenes publicadas en la tienda no estaban optimizadas para web, me llevó a crear un pequeño script que simplifica todo el flujo.

Hoy os presento img-web-optimizer, un script en Bash alojado en GitHub:

https://github.com/acorbaq/img-web-optimizer

La idea es muy simple: arrastrar imágenes a un directorio, ejecutar un comando y dejar que el programa se encargue del resto.

En esta entrada explicaré en qué consiste, qué hace exactamente y por qué es útil si trabajáis con VirtueMart. En los próximos días saldrán dos artículos complementarios explicando qué es ImageMagick y qué es ExifTool, porque ambos forman parte esencial del proceso.


¿Qué problema resuelve?

VirtueMart genera y utiliza miniaturas internas para muchas de sus funciones, especialmente en:

  • la vista del gestor de productos
  • la carga de nuevas imágenes
  • la gestión de fotografías duplicadas
  • la organización de imágenes por variantes

El inconveniente es que VirtueMart espera encontrar en cada JPG una miniatura embebida dentro de sus metadatos EXIF. No basta con tener una imagen reducida en la carpeta. Necesita la miniatura dentro del archivo.

Si las imágenes no la llevan, VirtueMart:

  • tarda más en procesarlas
  • puede mostrar avisos inesperados
  • o directamente no genera bien sus propias miniaturas internas

Además, muchos usuarios suben imágenes enormes, con metadatos innecesarios, perfiles de color extraños o resoluciones absurdamente grandes. Así que había que automatizarlo todo.


¿Qué hace exactamente img-web-optimizer?

Este pequeño script en Bash se encarga de:

  1. Crear un backup de las imágenes originales
  2. Optimizar cada JPG para uso web

    • reduce tamaño
    • normaliza el perfil de color
    • elimina metadatos innecesarios
  3. Generar miniaturas cuadradas dentro de la carpeta thumbnails/
  4. Insertar esa miniatura dentro del JPG como EXIF
  5. Mantener las imágenes originales accesibles por seguridad

Al final, la carpeta queda limpia, optimizada y lista para ser subida directamente a Joomla o VirtueMart sin sorpresas.

Lo más importante es que ahora las miniaturas no se eliminan: se guardan en thumbnails/ y además se incrustan dentro de cada imagen, garantizando compatibilidad con cualquier herramienta que dependa de miniaturas EXIF.


Cómo funciona su uso diario

El funcionamiento es muy sencillo. Imagina que has descargado 20 imágenes de un proveedor. Solo tienes que colocarlas en un directorio y ejecutar:

./img-web-optimizer.sh carpeta-con-imagenes

Automáticamente empieza el proceso:

  • te crea un backup
  • optimiza cada imagen
  • genera miniaturas
  • incrusta la miniatura EXIF
  • ordena la salida

En menos de unos segundos, la carpeta queda lista para subir al servidor.


Requisitos del programa

Tal y como explico en el README del repositorio, para que el script funcione necesitas instalar:

  • ImageMagick (para generar la miniatura y optimizar imágenes)
  • ExifTool (para leer y escribir metadatos EXIF, incluyendo la miniatura interna)

Ambas herramientas están disponibles en repositorios oficiales de la mayoría de distribuciones.

En próximas publicaciones explicaré más a fondo qué es ImageMagick y qué es ExifTool, cómo funcionan, qué comandos usan y por qué son tan importantes para trabajos de automatización.


¿Por qué un script así y no una extensión de Joomla?

Porque muchas veces, cuando estás preparando imágenes antes de subirlas, no quieres depender del servidor. Prefiero realizar la optimización localmente para:

  • ahorrar carga en el hosting
  • evitar problemas de permisos
  • obtener siempre el mismo resultado
  • tener control total sobre las miniaturas EXIF

Además, cuando manipulas cientos de imágenes de proveedores distintos, automatizar este proceso en tu PC es muchísimo más cómodo.


Futuras mejoras

Tal y como mencioné en el README:

“En el futuro se intentará incluir comandos para poder personalizar, analizar y optimizar las imágenes según necesidades específicas.”

Y esa es precisamente la idea: añadir parámetros para definir:

  • tamaño de miniaturas
  • nivel de optimización
  • formatos de salida
  • detección de imágenes duplicadas
  • normalización de perfiles sRGB
  • procesos automáticos para galerías grandes

Este script es solo el comienzo.


Conclusión

img-web-optimizer es una herramienta sencilla, pero tremendamente útil si trabajas con Joomla, VirtueMart o cualquier proyecto donde necesites subir imágenes ya optimizadas y con miniaturas EXIF integradas.

El objetivo es ahorrar tiempo, evitar errores y sistematizar un proceso que de otra forma sería repetitivo, manual y bastante propenso a fallos.

Si tenéis dudas, sugerencias o queréis aportar nuevas ideas para futuras versiones, dejadlas en los comentarios. Para mí será un placer seguir mejorando esta herramienta con vuestras experiencias.

En breve publicaré los artículos sobre ImageMagick y ExifTool, que complementan perfectamente esta entrada.