El problema inicial: TIFF enormes y necesidad de múltiples versiones
Uno de los primeros obstáculos fue el tamaño de los archivos. Muchos de los TIFF con los que trabajo superan los 4 GB, lo que representa una limitación técnica importante: la mayoría de aplicaciones comerciales como ACDSee o Lightroom no pueden abrir, procesar o automatizar este tipo de archivos por limitaciones de arquitectura o por falta de soporte de TIFF de gran tamaño (BigTIFF). Esto hacía inviable cualquier flujo de trabajo basado en software tradicional, y me obligaba a buscar soluciones más flexibles como ImageMagick, que sí puede manejar estos archivos desde línea de comandos sin problemas.
Trabajo con imágenes en formato TIFF de altísima resolución. Necesito generar versiones en diferentes tamaños y formatos para distintos usos: archivo, web, redes sociales, etc. Lo que parecía una tarea sencilla se complicó rápidamente:
Trabajo con imágenes en formato TIFF de altísima resolución. Necesito generar versiones en diferentes tamaños y formatos para distintos usos: archivo, web, redes sociales, etc. Lo que parecía una tarea sencilla se complicó rápidamente:
- Archivos de hasta 20.000 píxeles de ancho, para mantener un tamaño estándar en todos los proyectos, suficientemente grande pero no tanto como el original, y compatible con plataformas como 360cities, conocidos por todos.
- Necesidad de mantener los metadatos (especialmente coordenadas GPS).
- Diferentes formatos de salida: TIFF, JPG, WebP.
- Control de perfiles de color (algunos archivos estaban en Rec.2020 y necesitaban convertirse a sRGB para web).
- Evitar duplicados o sobrescrituras.
Primer paso: generar TIFF a 20.000 px
Comenzamos por lo básico. Hicimos un script PowerShell que, desde el directorio en el que estoy trabajando, recorría todos los archivos
El script comprobaba si ya existía una versión redimensionada antes de generarla, y los resultados se guardaban en una carpeta llamada
.tif
y generaba una copia redimensionada a 20.000 píxeles de ancho, sin perder metadatos.El script comprobaba si ya existía una versión redimensionada antes de generarla, y los resultados se guardaban en una carpeta llamada
20000
.Segundo paso: incluir JPG, PNG y evitar errores de selección
Al avanzar, vimos que también había archivos
Gracias a la depuración conjunta con IA, corregimos los errores usando una sintaxis más segura en PowerShell (
.jpg
y .png
que necesitaban ser tratados. Modificamos el script para incluir esos formatos y empezamos a encontrar pequeños errores, como archivos repetidos, rutas con caracteres conflictivos, o errores al trabajar en unidades distintas a C:
(por ejemplo, E:
).Gracias a la depuración conjunta con IA, corregimos los errores usando una sintaxis más segura en PowerShell (
-f
para formateo en lugar de interpolación directa), lo que evitó errores en rutas con dos puntos (:
).Tercer paso: generar JPG a 11.000 px desde TIFF y problemas con el color
El tamaño de 11.000 píxeles no fue elegido al azar. Se trata del tamaño máximo que Facebook permite para imágenes en 360°, lo que lo convierte en un estándar práctico para este tipo de contenidos. Además, las gafas Meta Quest manejan con fluidez imágenes de esta resolución, siendo una excelente opción para experiencias inmersivas tanto en plataformas sociales como en dispositivos de realidad virtual.
Una vez generados los TIFF base, queríamos crear versiones JPG de 11.000 píxeles. Aquí surgió un problema inesperado: los archivos TIFF tenían perfiles de color embebidos en Rec.2020, lo que hacía que los colores se vieran alterados al exportar directamente a sRGB. Detectamos este perfil al inspeccionar una de las imágenes con herramientas online como color.org y mediante el uso de software como exiftool, que nos permitieron ver que el perfil incrustado era Rec.2020, algo poco habitual en imágenes estándar para web.
El problema es que Rec.2020 ofrece una gama de colores más amplia y puede hacer que las imágenes se vean sobresaturadas o planas si no se interpretan correctamente. Por eso tuvimos que implementar conversión de perfiles ICC usando ImageMagick:, lo que hacía que los colores se vieran alterados al exportar directamente a sRGB.
Tuvimos que implementar conversión de perfiles ICC usando ImageMagick:
Una vez generados los TIFF base, queríamos crear versiones JPG de 11.000 píxeles. Aquí surgió un problema inesperado: los archivos TIFF tenían perfiles de color embebidos en Rec.2020, lo que hacía que los colores se vieran alterados al exportar directamente a sRGB. Detectamos este perfil al inspeccionar una de las imágenes con herramientas online como color.org y mediante el uso de software como exiftool, que nos permitieron ver que el perfil incrustado era Rec.2020, algo poco habitual en imágenes estándar para web.
El problema es que Rec.2020 ofrece una gama de colores más amplia y puede hacer que las imágenes se vean sobresaturadas o planas si no se interpretan correctamente. Por eso tuvimos que implementar conversión de perfiles ICC usando ImageMagick:, lo que hacía que los colores se vieran alterados al exportar directamente a sRGB.
Tuvimos que implementar conversión de perfiles ICC usando ImageMagick:
magick "entrada.tif" -profile "Rec2020.icc" -resize 11000x -profile "sRGB.icm" "salida.jpg"
Esto garantizó que los colores no se distorsionaran en los dispositivos que no soportan Rec.2020. Además, todo este proceso de conversión y redimensionado a 11.000 píxeles se realizó tomando como base los archivos previamente generados en 20.000 píxeles. Esto nos permitió evitar el uso repetido de los TIFF originales de más de 4 GB, acelerando enormemente el tiempo de procesado y reduciendo el riesgo de errores por tamaño o incompatibilidades. El resultado final se guardaba en la carpeta
11000
.Cuarto paso: generar múltiples versiones desde los JPG optimizados
A partir de esos JPG, se generaban todas las demás versiones:
- WebP 8000 px (para galerías de alta calidad, usando WebP, un nuevo formato más optimizado para web y buscadores)
- WebP 3000 px (ideal para web responsive, beneficiándose de la compresión eficiente del formato WebP)
- WebP 640 px (miniaturas, previsualizaciones, y carga rápida en dispositivos móviles)
- JPG 2500 px (catálogos impresos o redes)
Cada una iba en su propia carpeta (
8000
, 3000
, 640
, 2500
) y el script se aseguraba de no duplicar archivos ya existentes. También evitamos crear múltiples versiones del mismo archivo con sufijos -0
, -1
... que eran resultado de errores en scripts anteriores.Validación y pruebas
Durante la generación de las versiones a 11.000 píxeles nos encontramos con un fallo peculiar: algunas imágenes TIFF generaban múltiples archivos duplicados, como
Durante el proceso hicimos varias pruebas manuales para verificar:
imagen-0.jpg
, imagen-1.jpg
, e incluso más copias. Al principio parecía un problema aleatorio, pero tras analizar el flujo completo detectamos que el error estaba en cómo el script trataba la lectura de TIFF grandes o con estructuras internas inusuales. Usamos una estrategia de agrupación por nombre base (Group-Object
) para asegurar que cada imagen original solo fuera procesada una vez. Fue un buen ejemplo de cómo errores invisibles pueden multiplicar archivos si no se controlan correctamente los identificadores únicos.Durante el proceso hicimos varias pruebas manuales para verificar:
- Que no se duplicaban los archivos.
- Que los metadatos GPS se mantenían.
- Que los colores eran fieles al original.
- Que el rendimiento era adecuado.
Incluso se detectaron errores como la repetición múltiple de un mismo archivo en la carpeta
11000
, que finalmente se resolvieron usando agrupaciones por nombre base (Group-Object
) y asegurando que solo se procesara una vez cada archivo.Resultado final
Cada imagen original da lugar a 6 versiones optimizadas, generadas automáticamente:
- 20000.tif
- 11000.jpg (con conversión de color)
- 8000.webp
- 3000.webp
- 2500.jpg
- 640.webp
El ahorro de tiempo es inmenso. Lo que antes podía llevar más de una hora por lote, ahora se ejecuta en segundos, y sin fallos.
Reflexión final
Esta experiencia me ha servido para entender que la IA no es solo un generador de imágenes o texto, sino una verdadera asistente técnica. En este caso concreto:
- Me ayudó a estructurar y refinar los scripts.
- Me permitió detectar errores de forma rápida.
- Me dio soluciones viables con lenguaje técnico.
- Me ahorró muchas horas de trabajo manual y frustración.
Lo mejor es que el sistema es reutilizable y escalable. Hoy he procesado decenas de imágenes. Mañana podrían ser miles. Todo con la misma precisión.
Artículo basado en una sesión real con ChatGPT y publicado en jabenito.es para mostrar cómo la tecnología puede ponerse al servicio del trabajo práctico.
Artículo basado en una sesión real con ChatGPT y publicado en jabenito.es para mostrar cómo la tecnología puede ponerse al servicio del trabajo práctico.