Scripting con ImageMagick: 15 comandos de una línea para flujos de trabajo fotográficos reales
Son las 11 p. m. de un domingo. Un cliente escribe: "¿Puedes tener las 1,400 tomas de producto redimensionadas, con marca de agua y convertidas a JPG listas para la web para el lanzamiento del lunes?" En el procesador por lotes de Photoshop, eso son cinco horas de tarde con el ventilador de la laptop aullando y el riesgo de que una mala configuración de acción arruine una décima parte de los archivos. En ImageMagick es un comando de shell, ocho minutos, y vuelves a tu libro. La diferencia no es habilidad ni hardware; es tener la receta escrita.
ImageMagick es la navaja suiza del procesamiento de imágenes por línea de comandos y la forma más rápida de convertir, redimensionar, poner marca de agua o eliminar metadatos en carpetas de miles de JPG sin abrir una sola interfaz gráfica. Los 15 one-liners a continuación cubren el trabajo que realmente aparece en los flujos de trabajo fotográficos reales: redimensionar una carpeta de JPG de cámara para la web, convertir lotes de RAW, poner marca de agua a vistas previas de clientes y las tareas de conversión de formato que de otro modo te comerían una tarde en el procesador por lotes de Photoshop.
Por qué ImageMagick sigue siendo relevante en 2026
Tres razones por las que se ha mantenido esencial mientras muchos competidores se desvanecieron: maneja aproximadamente 200 formatos de archivo, escala linealmente de un archivo a un millón y se integra limpiamente en cualquier pipeline. Alternativas modernas como libvips son más rápidas en rendimiento bruto, y herramientas como sharp (Node.js) son más fáciles de integrar en aplicaciones web, pero para trabajo por lotes en línea de comandos en una estación de trabajo, ImageMagick sigue siendo el predeterminado para la mayoría de los profesionales y equipos de DevOps. La versión 7 (con el comando unificado magick) ha madurado hasta el punto en que las viejas peculiaridades de la versión 6 han desaparecido en su mayoría.
Instala la versión moderna
Usa ImageMagick 7, no la rama heredada 6.x. El nombre del comando es magick en v7, reemplazando los antiguos binarios convert, mogrify y identify (aunque todavía funcionan como alias). En macOS: brew install imagemagick. En Linux: el gestor de paquetes de tu distribución, o descarga una compilación estática de imagemagick.org. En Windows: el instalador, o usa WSL2 con la compilación de Linux, que es en lo que se basan la mayoría de los flujos de trabajo profesionales en 2026.
Receta 1: Redimensionar una carpeta de JPG de cámara a 2048 px de ancho
magick mogrify -resize 2048x -path web/ *.jpg
Redimensiona cada JPG en el directorio actual, escribiendo la salida en web/. Usa 2048x para limitar por ancho o x2048 para limitar por alto.
Receta 2: Redimensionar y recodificar con calidad 80
magick mogrify -resize 2048x -quality 80 -strip -path web/ *.jpg
Añade control de calidad y eliminación de metadatos. Reduce un JPG de cámara de 12 MB a aproximadamente 600 KB en resolución web.
Receta 3: Convertir RAW a JPG por lotes
for f in *.CR3; do magick "$f" -quality 90 "${f%.CR3}.jpg"; done
Funciona con CR2, CR3, NEF, ARW, RAF, DNG, ORF, cualquier formato RAW para el que tu compilación de ImageMagick tenga soporte de delegados. Para carpetas RAW de formato mixto, el convertidor de RAW a JPG en el navegador hace el mismo trabajo sin el baile de delegados.
Receta 4: Eliminar todos los metadatos
magick mogrify -strip *.jpg
Elimina EXIF, IPTC, XMP y el perfil de color en un solo paso. Úsalo solo en copias, nunca en originales: los metadatos son realmente útiles para el trabajo de catalogación.
Receta 5: Eliminar metadatos pero conservar el perfil de color
magick mogrify -define jpeg:preserve-settings -profile sRGB.icc -strip *.jpg
Conserva el perfil sRGB incrustado mientras elimina todo lo demás.
Receta 6: Poner marca de agua a cada archivo con un PNG transparente
magick mogrify -gravity southeast -draw "image over 20,20 0,0 'watermark.png'" *.jpg
Ancla un watermark.png en la esquina inferior derecha con un margen de 20 px. Ajusta la gravedad a southwest, center o north para otras ubicaciones.
Receta 7: Marca de agua de texto
magick mogrify -gravity southeast -font Helvetica -pointsize 36 -fill 'white' -annotate +30+30 '© Studio 2026' *.jpg
Superposición rápida de texto sin necesidad de un activo PNG.
Receta 8: Convertir JPG a WebP con calidad al 80%
for f in *.jpg; do magick "$f" -quality 80 "${f%.jpg}.webp"; done
WebP ofrece archivos aproximadamente de 30 a 40 por ciento más pequeños que un JPG de calidad equivalente. Para conversiones puntuales, el convertidor de JPG a WebP es más rápido que el bucle.
Receta 9: Generar una hoja de contactos
magick montage -tile 5x -geometry 400x300+10+10 -label '%f' *.jpg contact.jpg
Construye una cuadrícula de miniaturas de 5 columnas con leyendas de nombre de archivo. Útil para revisión de clientes o archivos de sesiones.
Receta 10: Combinar varios JPG en un PDF
magick *.jpg portfolio.pdf
Exportación de fotolibro en una línea. Para más control sobre el tamaño de página y la calidad, el convertidor de JPG a PDF expone las mismas opciones a través de una interfaz más amigable.
Receta 11: Recortar a cuadrado desde el centro
magick mogrify -gravity center -extent 1080x1080 -path square/ *.jpg
Recorte centrado y relleno a dimensiones exactas. Combínalo con la calculadora de relación de aspecto para planificar el tamaño de salida adecuado para Instagram, TikTok o Pinterest.
Receta 12: Rotación automática basada en la orientación EXIF
magick mogrify -auto-orient *.jpg
Incorpora el indicador de rotación EXIF en los datos de píxeles y limpia el indicador, asegurando que el archivo se muestre correctamente en cualquier visor independientemente del manejo de orientación.
Receta 13: Nivel de exposición automático
magick mogrify -auto-level *.jpg
Estira el histograma para usar todo el rango. Burdo comparado con Lightroom, pero útil como primer paso en documentos escaneados o capturas de pantalla.
Receta 14: Convertir JPG de color a escala de grises
magick mogrify -colorspace Gray *.jpg
Conversión real a escala de grises, tamaño de archivo más pequeño que un JPG de color desaturado.
Receta 15: Leer dimensiones de imagen y tamaño de archivo
magick identify -format "%f %wx%h %b\n" *.jpg
Imprime nombre de archivo, ancho por alto y tamaño de archivo legible. Envíalo a sort o awk para auditorías. Para identificación basada en navegador, el inspector de información de imagen reporta los mismos datos más EXIF.
Construye pipelines, no casos aislados
Combina recetas en pipelines para flujos de trabajo reales. Un pipeline típico de vista previa para cliente lee:
- Orientación automática
- Redimensionar a 2048 px de ancho
- Eliminar metadatos excepto el perfil de color
- Añadir marca de agua de texto
- Salida JPG con calidad 80 a una carpeta de entrega
Toda esa cadena es un solo comando de ImageMagick:
magick mogrify -auto-orient -resize 2048x -strip -gravity southeast -font Helvetica -pointsize 30 -fill 'white' -annotate +20+20 '© Studio 2026' -quality 80 -path preview/ *.jpg
Envuélvelo en un script de shell que tome la carpeta de entrada como argumento y tendrás un generador de vistas previas permanente para clientes.
Paso a paso: crea un generador de vistas previas reutilizable
- Crea el script.
nano ~/bin/make-preview.sh - Añade el shebang y el argumento.
#!/usr/bin/env bashseguido deset -euo pipefailyINPUT="${1:?usage: make-preview.sh folder}" - Crea la carpeta de salida.
mkdir -p "$INPUT/preview" - Ejecuta el pipeline. El comando de una línea de ImageMagick de arriba, con
$INPUT/*.jpgy-path "$INPUT/preview/" - Registra un resumen. Usa
magick identify -formatpara contar archivos e informar del tamaño total. - Hazlo ejecutable.
chmod +x ~/bin/make-preview.sh - Prueba en una carpeta pequeña con 20 archivos antes de comprometerte con una ejecución de 2,000 archivos.
- Añádelo a tu lista de verificación de posproducción de sesiones. Ejecútalo como paso 2 después de la ingesta, antes de la importación a Lightroom.
Verifica con herramientas del navegador
Después de cualquier lote grande, revisa tres o cuatro archivos con el compresor JPG para confirmar que la salida tiene el tamaño de archivo esperado, y ejecuta un antes y después con el convertidor de imágenes si sospechas que el codificador de ImageMagick está produciendo artefactos que no viste a menor escala. La ruta JPG a PDF también es útil cuando necesitas comparar la salida PDF generada por el navegador con la de ImageMagick, especialmente para entregables de varias páginas.
Errores comunes de ImageMagick y soluciones
- Falta el delegado RAW. Instala
dcrawo compila ImageMagick con libraw si la conversión RAW falla silenciosamente. Solución:brew install dcrawen macOS, luego reinstala imagemagick. - Límites de recursos. Los lotes grandes con archivos pesados pueden alcanzar los límites de memoria de policy.xml de ImageMagick. Solución: edita
/etc/ImageMagick-7/policy.xmlpara aumentar los límites de memoria y disco, o usa-limit memory 4GiB. - La calidad 80 en ImageMagick no es la calidad 80 en Photoshop. Las escalas de calidad difieren. Solución: haz una prueba antes de comprometerte con un número; ImageMagick 85 ≈ Photoshop 70-75 visualmente.
- mogrify sobrescribe los originales por defecto. Usa siempre
-pathpara escribir en una carpeta nueva. Solución: nunca ejecutes mogrify en una carpeta de la que no tengas copia de seguridad. - Strip elimina el perfil de color por defecto. Los archivos se renderizan con colores incorrectos en navegadores que reconocen perfiles. Solución: vuelve a incrustar sRGB explícitamente con
-profile sRGB.icc. - Auto-orient no funciona en todos los códecs. Algunas compilaciones de HEIC y AVIF omiten el manejo de orientación. Solución: convierte HEIC a JPG primero con el convertidor de HEIC a JPG.
Tres pipelines reales de ImageMagick
Comercio electrónico, 14,000 SKU, Berlín. Un pequeño minorista de muebles de Berlín ejecuta un cron job nocturno: sincroniza nuevas tomas desde el NAS del estudio fotográfico, aplica ImageMagick (orientación automática, redimensionar a cuatro tamaños, eliminar metadatos, incrustar sRGB, escribir en el bucket de CDN). Doce minutos cada noche, dos años ininterrumpidos, reemplaza lo que antes era una tarea de medio día por semana.
Fotógrafo de bodas, Auckland. El pipeline de vistas previas de Sarah ejecuta la misma receta en cada sesión entregada: un JPG de 2,048 px con marca de agua va a la galería del cliente, un JPG de 4,096 px sin marca de agua va a la API del socio de impresión, y un PDF de hoja de contactos va a su propio archivo. Un script, tres entregables, cada sesión.
Colaborador de agencia de stock, Lisboa. Pedro procesa 200 fotogramas RAW por semana en JPG listos para stock. ImageMagick maneja el redimensionado, la conversión a sRGB y la eliminación de metadatos. Pasa la salida por el inspector de información de imagen como verificación final antes de enviar a Adobe Stock y Shutterstock.
ImageMagick vs alternativas
| Herramienta | Fortaleza | Velocidad | Ideal para |
|---|---|---|---|
| ImageMagick 7 | Amplitud de formatos, scripting | Moderada | Trabajo por lotes general |
| libvips / vips | Velocidad pura | 3-10 veces más rápido | Pipelines de alto rendimiento |
| sharp (Node.js) | Integración web sencilla | Rápida | Aplicaciones web |
| Lote de Photoshop | Interfaz gráfica, ediciones complejas | Lento | Fotógrafos que ya usan PS |
| Adobe Bridge | Vista previa + lote | Moderada | Revisión visual durante el lote |
| Compresor de JPG en el navegador | Sin instalación | Por archivo | Trabajos puntuales |
Técnicas avanzadas de ImageMagick
- GNU parallel para escalado multinúcleo
find . -name "*.jpg" | parallel magick {} -resize 2048x web/{}usa todos los núcleos de la CPU. - Procesamiento en flujo pasa imágenes por ImageMagick sin archivos intermedios:
magick input.jpg -resize 2048x miff:- | other-tool. - Scripts integrados el comando magick admite
-scriptpara operaciones complejas de varios pasos definidas en un archivo. - Distorsión y corrección de perspectiva
-distort Perspectivemaneja escaneos trapezoidales de pinturas o documentos. - Redimensionado líquido
-liquid-rescaleimplementa el redimensionado consciente del contenido (seam carving) para cambiar las proporciones sin distorsión. - Composición para salida en capas coloca varias imágenes, máscaras y efectos en una sola pasada.
- Kernels personalizados y convolución para necesidades específicas de enfoque, desenfoque y detección de bordes.
Preguntas frecuentes
¿Es seguro ejecutar mogrify en el mismo lugar?
Solo si tienes una copia de seguridad. Mogrify sobrescribe los archivos en la carpeta de origen por defecto, lo que destruye los originales. Usa siempre -path para escribir en una carpeta separada en trabajos de producción.
¿Cómo instalo soporte para RAW?
Asegúrate de que libraw esté instalado antes de compilar ImageMagick, o usa una compilación que incluya delegados RAW. En macOS, brew install imagemagick libraw dcraw normalmente lo maneja.
¿Cuál es el ajuste de calidad adecuado para JPG web?
80 a 85 en unidades de ImageMagick para la mayoría de los casos. 70 es aceptable para miniaturas de listados de baja prioridad; 90+ es un desperdicio para entrega web y es más apropiado para intermediarios de impresión.
¿Puede ImageMagick manejar HEIC?
Sí, si se compila con libheif. Las compilaciones modernas en macOS y Linux lo incluyen por defecto. Para conversión en el navegador, el convertidor de HEIC a JPG es la alternativa sin instalación.
¿Por qué mis colores se ven diferentes después del procesamiento con ImageMagick?
Casi siempre es un problema de perfil de color. ImageMagick asume sRGB cuando no hay perfil presente. Usa -profile sRGB.icc explícitamente o convierte tus archivos de origen a sRGB antes de procesar.
¿Es ImageMagick más lento que libvips?
Sí, normalmente de 3 a 10 veces más lento para la misma operación. Para tuberías que necesitan rendimiento bruto, libvips es la opción correcta. Para amplitud de formatos y flexibilidad de scripting, gana ImageMagick.
¿Puedo usar ImageMagick en aplicaciones web de producción?
Sí, pero ten cuidado con la configuración de seguridad de policy.xml. ImageMagick ha tenido varios CVE relacionados con entradas de imágenes maliciosas; bloquea la política para deshabilitar operaciones de riesgo y usa la versión más reciente.
Refuerzo de seguridad para implementaciones en producción
Ejecutar ImageMagick como parte de un servicio web público implica aceptar cargas de imágenes no confiables, y las entradas no confiables han sido históricamente la causa de múltiples vulnerabilidades graves (ImageTragick, exploits de PDF basados en Ghostscript, inyección MVG/MSL). La lista de verificación de refuerzo estándar: deshabilita PS, EPS, PDF, MVG y MSL en policy.xml a menos que tu aplicación los necesite explícitamente; establece límites de recursos estrictos para evitar denegación de servicio mediante bombas de descompresión manipuladas; ejecuta ImageMagick en un proceso aislado (contenedor Docker o unidad systemd con capacidades restringidas); valida los encabezados de los archivos antes de pasarlos a ImageMagick; y mantén las actualizaciones de versión al día. Las implementaciones orientadas al público que ignoran estos pasos han sido la fuente de brechas más de una vez.
Para entornos de muy alta seguridad, considera libvips o sharp. Ambos tienen superficies de ataque más pequeñas y significativamente menos CVE históricos, mientras cubren el 80 por ciento de las operaciones comunes de procesamiento de imágenes.
Combinando ImageMagick con otras herramientas
ImageMagick rara vez es la única herramienta en una tubería. Las combinaciones comunes incluyen: ImageMagick para conversión de formato más ExifTool para operaciones de metadatos, ImageMagick para redimensionado más mozjpeg para la codificación final (mozjpeg produce JPG más pequeños con la misma calidad visual), ImageMagick para recorte más el eliminador de fondos para trabajo de recorte, e ImageMagick para generación de miniaturas más el ampliador por IA para la resolución de entrega final. Cada herramienta hace bien una cosa; encadenarlas produce resultados que ninguna herramienta individual logra por sí sola.
Inmersión profunda en la gestión del color
La mayoría de los problemas de color en ImageMagick se remontan a una de tres causas: perfil de entrada faltante, perfil de salida faltante o intención no coincidente. El comportamiento predeterminado trata la entrada sin perfil como sRGB, lo cual es correcto para la mayoría de los archivos modernos, pero incorrecto para escaneos antiguos etiquetados como Adobe RGB o para archivos provenientes de cámaras configuradas para ProPhoto RGB. Siempre verifica el perfil de entrada con magick identify -format "%[colorspace] %[profile:icc]" antes de cualquier operación crítica para el color.
Para obtener resultados consistentes en un lote, incrusta explícitamente el perfil de destino: magick mogrify -colorspace sRGB -profile sRGB.icc -path web/ *.jpg. La bandera -colorspace convierte los valores de píxeles al espacio de destino; la bandera -profile etiqueta el archivo para que el software posterior sepa lo que está viendo. Omite cualquiera de las dos y obtendrás un archivo etiquetado pero sin transformar (colores incorrectos mostrados correctamente) o transformado pero sin etiquetar (valores correctos, perfil asumido incorrecto).
Para flujos de trabajo de impresión que necesitan conversión a CMYK, ImageMagick maneja la transformación mediante perfiles ICC incrustados. Usa un perfil CMYK que coincida con el proceso de impresión (US Web Coated SWOP, Fogra39, GRACoL) y verifica con el inspector de información de imagen después de la conversión. Los laboratorios de impresión que rechazan archivos normalmente lo hacen por falta de coincidencia de perfil, no por resolución o formato.
Ajuste de memoria y rendimiento
ImageMagick lee toda la imagen en la memoria por defecto, lo que se convierte en un problema con archivos de 50 megapíxeles en lotes de miles. La solución es la caché de píxeles: ImageMagick vuelca imágenes grandes al disco cuando se alcanzan los límites de memoria. Ajusta la caché con -limit memory 8GiB -limit map 16GiB -limit disk 64GiB para trabajos de alto rendimiento y apunta la caché a un SSD rápido con MAGICK_TMPDIR=/path/to/ssd. En Linux, también configura páginas enormes transparentes y desactiva la memoria de intercambio si trabajas en una estación con abundante RAM.
Para lotes realmente masivos (10,000+ archivos), libvips es consistentemente de 3 a 10 veces más rápido que ImageMagick en la misma operación porque transmite píxeles a través de nodos de procesamiento en lugar de materializar imágenes completas. La herramienta de línea de comandos vips expone primitivas similares de redimensionar, convertir formato y recortar. Mantén ImageMagick para recetas complejas de varios pasos y cambia a libvips para trabajos de alto rendimiento de formato y redimensionamiento.
Creación de un pipeline de marcas de agua que escala
Un estudio que entrega 100,000 vistas previas con marca de agua al año necesita un marcado que sea más rápido, más flexible y más seguro que un solo comando fijo. El pipeline maduro incluye: generación dinámica de texto de marca de agua por cliente (nombre del cliente, número de contrato, fecha de entrega), lógica de posicionamiento que se adapta a la relación de aspecto de la imagen, escalado de opacidad basado en el brillo de la imagen en la región de la marca de agua y marcado de agua invisible opcional mediante esteganografía para evidencia legal.
ImageMagick maneja limpiamente la parte visible. Para marcas de agua invisibles, combínalo con una herramienta como Steghide o un codificador LSB personalizado. La combinación produce archivos que parecen intactos a simple vista pero que revelan metadatos del cliente y de la entrega bajo análisis forense si la redistribución se convierte en un problema.
Las 15 recetas anteriores cubren aproximadamente el 80 por ciento de lo que un fotógrafo profesional necesita de una herramienta de imágenes de línea de comandos. Elige las tres que usarías esta semana, escríbelas en un script de shell y ejecútalas en una copia de la carpeta de la sesión del mes pasado. La próxima vez que enfrentes un lote de 2,000 archivos, recurrirás al script en lugar de abrir Photoshop. Pasa un archivo de prueba por la herramienta de información de imagen para confirmar lo que ImageMagick está produciendo realmente, y usa el convertidor de JPG a WebP, de JPG a PNG y convertidor de imágenes para trabajos específicos de formato cuando el scripting sea excesivo.