ImageMagick es un conjunto de utilidades de línea de comandos para modificar y trabajar con imágenes. ImageMagick puede realizar rápidamente operaciones en una imagen desde un terminal, realizar el procesamiento por lotes de muchas imágenes o integrarse en un script bash.
ImageMagick puede realizar una amplia variedad de operaciones. Esta guía le presentará la sintaxis y las operaciones básicas de ImageMagick y le mostrará cómo combinar operaciones y realizar el procesamiento por lotes de muchas imágenes.
¿De qué vamos a hablar?
Instalación
ImageMagick no está incluido en las instalaciones predeterminadas de Ubuntu y muchas otras distribuciones de Linux. Para instalarlo en Ubuntu, use el siguiente comando:
sudo apt-get install imagemagick
Conversión entre formatos
El comando convert toma una imagen, realiza acciones en ella y guarda la imagen con el nombre de archivo que especifique. Una de las cosas más básicas que puedes hacer con él es convertir imágenes entre formatos. El siguiente comando toma un archivo PNG llamado “howtogeek.png” en el directorio actual y crea una imagen JPEG a partir de él:
convert howtogeek.png howtogeek.jpg

También puede especificar un nivel de compresión para las imágenes JPEG:
convert howtogeek.png -quality 95 howtogeek.jpg
El número debe estar entre 1 y 100. ImageMagick utiliza el nivel de calidad de la imagen de entrada, si es posible. De lo contrario, ImageMagick tiene como valor predeterminado 92.
Redimensionar imágenes
El comando convert también puede cambiar rápidamente el tamaño de una imagen. El siguiente comando solicita a ImageMagick que redimensione el tamaño de una imagen a 200 píxeles de ancho y 100 píxeles de alto:
convert example.png -resize 200x100 example.png
Hemos usado el mismo nombre de archivo aquí, por lo que ImageMagick sobrescribirá el archivo original.

ImageMagick intentará conservar la relación de aspecto si utiliza este comando. Alterará la imagen para que quepa dentro de un área de 200×100, pero la imagen puede no ser exactamente 200×100. Si desea forzar que la imagen se convierta en un tamaño específico, incluso si arruina la relación de aspecto, agregue un signo de exclamación a las dimensiones:
convert example.png -resize 200x100! example.png
También puede especificar un ancho o alto específico e ImageMagick cambiará el tamaño de la imagen a ese ancho o alto mientras conserva la relación de aspecto. El siguiente comando cambiará el tamaño de una imagen a un ancho de 200:
convert example.png -resize 200 example.png
El siguiente comando cambiará el tamaño de una imagen a una altura de 100:
convert example.png -resize x100 example.png
Rotación de una imagen
ImageMagick puede rotar rápidamente una imagen. El siguiente comando toma una imagen llamada howtogeek.jpg, la gira 90 grados y guarda la imagen rotada como howtogeek-rotated.jpg:
convert howtogeek.jpg -rotate 90 howtogeek-rotated.jpg
Si especifica el mismo nombre de archivo, ImageMagick guardará la imagen rotada sobre el archivo de imagen original.

Aplicación de efectos
ImageMagick puede aplicar una variedad de efectos a una imagen. Por ejemplo, el siguiente comando aplica el efecto “carbón” a una imagen:
convert howtogeek.jpg -charcoal 2 howtogeek-charcoal.jpg

El comando carboncoal aplica un efecto artístico de estilo “carboncillo” a una imagen: el 2 en el comando le permite controlar la fuerza del efecto.

El siguiente comando aplica el efecto “Implosde” con una fuerza de 1:
convert howtogeek.jpg -implode 1 howtogeek-imploded.jpg

El efecto de implosión hace que parezca que hay un agujero negro en el centro de la imagen.

Combinación de operaciones
Todas estas operaciones se pueden combinar. Con un solo comando, puede cambiar el tamaño de una imagen, rotarla, aplicar un efecto y convertirla a otro formato:
convert howtogeek.png -resize 400x400 -rotate 180 -charcoal 4 -quality 95 howtogeek.jpg

Esto es solo el comienzo de lo que puede hacer con ImageMagick. Hay muchas más operaciones que puede combinar.
Procesamiento por lotes
Puede aprovechar Bash para realizar rápidamente el procesamiento por lotes de muchas imágenes. Por ejemplo, el siguiente comando tomaría todos los archivos PNG en el directorio actual, los rotaría y guardaría una nueva copia de cada uno con “rotated-” agregado al principio de cada nombre de archivo.
for file in *.png; do convert €file -rotate 90 rotated-€file; done

Puede modificar fácilmente este comando para realizar otras acciones. También puede integrar comandos de procesamiento por lotes en un script de shell Bash para automatizar las operaciones de procesamiento de imágenes.
Cualquier artículo en ImageMagick omitirá mucho de lo que puede hacer con él: hay demasiadas opciones y comandos. Si estás interesado en hacer más con ImageMagick, echa un vistazo al documentación en el sitio web de ImageMagick para una mirada mucho más profunda a ImageMagick.