Para aquellos que trabajan con edicion de imágenes, ImageMagick es una herramienta imprescindible. Esta suite de software de código libre proporciona una amplia gama de funciones para manipular y editar imágenes en varios formatos.

ImageMagick tiene una historia interesante que se remonta a 1987, cuando fue creado por John Cristy. Desde entonces, ha evolucionado para convertirse en una de las herramientas más populares y versátiles para el procesamiento de imágenes.

Si eres nuevo en ImageMagick o simplemente quieres mejorar tus habilidades, en este artículo te presentamos 10 comandos esenciales y prácticos que te ayudarán a iniciarte. Desde cambiar el tamaño de una imagen o convertir formatos a modificar imágenes en lote, estos comandos te darán una buena idea de lo que ImageMagick puede hacer.

Convertir una imagen a otro formato

Una de las funciones más básicas.

convert INPUT_IMAGE.jpg OUTPUT_IMAGE.png
  • convert: Esta es la orden principal de ImageMagick para convertir o manipular imágenes.
  • INPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de entrada que se va a modificar en formato jpg.
  • INPUT_IMAGE.jpg: Nombre del archivo de la imagen de salida que se va a modificar en formato png.

Redimensionar una imagen a cierto ancho

Otro ejemplo sencillo.

convert INPUT_IMAGE.jpg -resize 1200x OUTPUT_IMAGE.jpg
  • INPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de entrada que se va a redimensionar.
  • -resize 1200x: Este parámetro establece el nuevo tamaño de la imagen de salida. En este caso, se establece la anchura de la imagen en 1200 píxeles. La altura se ajustará automáticamente para mantener las proporciones originales de la imagen.
  • OUTPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de salida resultante después de redimensionar la imagen de entrada.

Mejorar el contraste y la saturación de una imagen

Las imágenes en la web suelen sufrir de poco contraste y a veces de poca saturación. Para arreglarlo:

convert INPUT_IMAGE.jpg -contrast -modulate 120 OUTPUT_IMAGE.jpg
  • INPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de entrada que se va a modificar.
  • -contrast: Este parámetro mejora el contraste de la imagen de entrada. El contraste se define como la diferencia de luminancia percibida entre las partes más claras y más oscuras de una imagen. Al aumentar el contraste, las diferencias entre los tonos se hacen más pronunciadas, lo que puede hacer que la imagen sea más nítida y fácil de ver.
  • -modulate 120: Este parámetro modifica la saturación de la imagen. La saturación se refiere a la pureza o intensidad de un color. Al aumentar la saturación, los colores se hacen más vívidos y saturados. En este ejemplo, la saturación se establece en 120, lo que significa que se incrementa en un 20% respecto al valor original.

Agregar logo a imagen

convert INPUT_IMAGE.jpg -quality 70 -strip \( LOGO.png -resize 300x -gravity SouthEast -geometry +15+15 \) -composite OUTPUT_IMAGE.jpg
  • INPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de entrada que se va a modificar.
  • -quality 70: Este parámetro establece la calidad de la imagen de salida en un rango del 0 al 100. En este ejemplo, la calidad se establece en 70.
  • -strip: Este parámetro elimina cualquier metadato extra no gráfico de la imagen de salida, como los datos EXIF, para reducir el tamaño del archivo.
  • ( LOGO.png -resize 300x -gravity SouthEast -geometry +15+15 ): Esta sección del comando se encuentra entre paréntesis para indicar que es un conjunto de operaciones a realizar en la imagen del logo antes de combinarla con la imagen de entrada. Se aplican los siguientes cambios a la imagen del logo:
    1. LOGO.png: Se especifica el nombre del archivo de la imagen del logo.
    2. -resize 300x: Redimensiona la imagen del logo a un ancho de 300 píxeles, manteniendo la proporción original.
    3. -gravity SouthEast: Establece la gravedad en el sudeste de la imagen del logo, lo que determina su posición al momento de superponerla.
    4. -geometry +15+15: Establece una distancia de 15 píxeles hacia la derecha y 15 píxeles hacia arriba desde la esquina inferior derecha (debido a la gravedad establecida anteriormente) para posicionar el logo en la imagen de entrada.
  • -composite: Este parámetro indica a ImageMagick que debe combinar la imagen de entrada y la imagen del logo procesada previamente.
  • OUTPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de salida resultante de la operación.

Descargar imagen de internet, hacerla más pequeña y optimizarla.

convert https://blogandweb.com/INPUT_IMAGE.jpg -resize 1200x -quality 60 -strip OUTPUT_IMAGE.jpg
  • https://blogandweb.com/INPUT_IMAGE.jpg: Se especifica la URL de la imagen de entrada que se va a modificar.
  • -resize 1200x: Este parámetro redimensiona la imagen de entrada a un ancho máximo de 1200 píxeles, manteniendo la proporción original de la imagen.
  • -quality 60: Este parámetro establece la calidad de la imagen de salida en un rango del 0 al 100. En este ejemplo, la calidad se establece en 60.
  • -strip: Este parámetro elimina cualquier metadato extra no gráfico de la imagen de salida, como los datos EXIF, para reducir el tamaño del archivo.
  • OUTPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de salida resultante de la operación.

Eliminar borde en una imagen

convert INPUT_IMAGE_WITH_BORDERS.jpg -shave 10x10 OUTPUT_IMAGE.jpg
  • INPUT_IMAGE_WITH_BORDERS.jpg: Especifica el nombre del archivo de la imagen de entrada con bordes que se van a eliminar.
  • -shave 10x10: Este parámetro elimina una cantidad específica de píxeles de los bordes de la imagen de entrada. En este ejemplo, se eliminan 10 píxeles de cada lado horizontal y vertical de la imagen.
  • OUTPUT_IMAGE.jpg: Especifica el nombre del archivo de la imagen de salida resultante después de aplicar los cambios especificados en el comando.

Agregar texto a una imagen

convert INPUT_IMAGE.jpg -gravity South -pointsize 24 -annotate 0 'Creative Commons' OUTPUT_IMAGE.jpg
  • INPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de entrada que se va a modificar.
  • -gravity South: Este parámetro establece la gravedad en el sur de la imagen, lo que significa que el texto se alineará en la parte inferior de la imagen.
  • -pointsize 24: Este parámetro establece el tamaño del punto del texto en 24.
  • -annotate 0 'Creative Commons': Este parámetro agrega una anotación (texto) a la imagen. El número 0 indica que el texto no debe tener un marco. ‘Creative Commons’ es el texto que se agregará a la imagen.
  • OUTPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de salida resultante de la operación.

Unir dos o más imágenes en un montaje

convert INPUT_IMAGE_1.jpg INPUT_IMAGE_2.jpg INPUT_IMAGE_3.jpg +append OUTPUT_IMAGE.jpg
  • INPUT_IMAGE_1.jpg, INPUT_IMAGE_2.jpg, INPUT_IMAGE_3.jpg: Se especifican los nombres de los archivos de las imágenes de entrada que se van a utilizar para crear el montaje.
  • +append: Este parámetro indica a ImageMagick que debe añadir las imágenes de entrada una al lado de la otra en una sola imagen salida.
  • OUTPUT_IMAGE.jpg: Se especifica el nombre del archivo de la imagen de salida resultante del montaje.

Modificar imágenes en lotes

Si necesitas aplicar el mismo efecto o cambio a un grupo de imágenes no necesitas hacerlo de una en una.

convert *.jpg -resize 800x600! OUTPUT_%03d.jpg
  • *.jpg: Este patrón de archivo especifica que se deben seleccionar todos los archivos JPG en el directorio actual.
  • -resize 800x600!: Este parámetro establece el tamaño de las imágenes de salida en 800 píxeles de ancho y 600 píxeles de alto. El signo de exclamación (!) después de las dimensiones indica que se debe redimensionar la imagen manteniendo su proporción original. Si se omite el signo de exclamación, la imagen podría distorsionarse si las proporciones no coinciden con las dimensiones especificadas.
  • OUTPUT_%03d.jpg: Este parámetro especifica el nombre del archivo de la imagen de salida. El símbolo `%03d` es un marcador de posición que se reemplazará por un número de tres dígitos que se incrementará para cada imagen procesada. Por ejemplo, las imágenes de salida se llamarán OUTPUT_001.jpg, OUTPUT_002.jpg, etc.

En resumen, este comando redimensionará todas las imágenes JPG en el directorio actual a 800×600 píxeles, manteniendo sus proporciones originales, y guardará las imágenes de salida con un nombre incremental en el mismo directorio.

Crear archivos GIF animados

convert -delay 20 -loop 0 INPUT_IMAGE_1.jpg INPUT_IMAGE_2.jpg INPUT_IMAGE_3.jpg OUTPUT_IMAGE.gif
  • INPUT_IMAGE_1.jpg INPUT_IMAGE_2.jpg INPUT_IMAGE_3.jpg: Se especifican los nombres de los archivos de las imágenes de entrada que se van a utilizar para crear el GIF animado.
  • -delay 20: Este parámetro establece la cantidad de tiempo (en centésimas de segundo) que cada imagen se mostrará en el GIF animado. En este ejemplo, cada imagen se mostrará durante 20 centésimas de segundo.
  • -loop 0: Este parámetro indica cuántas veces se repetirá el GIF animado. El valor 0 indica que se repetirá indefinidamente.
  • OUTPUT_IMAGE.gif: Se especifica el nombre del archivo del GIF animado resultante de la operación.

Conclusión

ImageMagick es en mi opinión una herramienta indispensable para la manipulación de imágenes. Su potencia radica en su capacidad para editar una o varias imágenes de forma sencilla y muy rápida. Aunque el hecho de no contar con una interfaz de usuario gráfica puede asustar a más de uno, no resulta complicado aprender a utilizarlo gracias a sencilla sintaxis y la gran cantidad de guías y ejemplos en línea.

Mi experiencia personal con ImageMagick ha sido muy positiva. Me ha permitido dejar a Gimp solo para ediciones más complejas, lo que me ha ahorrado mucho tiempo. Además, su capacidad para manipular múltiples imágenes al mismo tiempo ha sido de gran utilidad tanto en proyectos web como en la edición de fotos personales.