Cuando hablamos de convertir entre formatos de imagen, ImageMagick es el software por excelencia. Es muy potente y permite hacer todo tipo de operaciones con imágenes, no sólo conversiones, sino creación de imágenes paso a paso, gestión de capas, animaciones, modificaciones de colores, transparencias, aspectos técnicos de formatos, etc.
Instalación de imagemagick
Lo primero es instalar ImageMagick en tu sistema. Normalmente viene incluido en los repositorios oficiales, por lo que basta con utilizar apt
:
$ sudo apt install imagemagick
$ convert --version
En algunas versiones modernas, en lugar de convert
debemos utilizar el comando magick
. ImageMagick viene con varios comandos: convert
, identify
, display
, etc... Puedes utilizar cualquiera de ellos, indicando el parámetro --version
para comprobar si ha sido instalado correctamente.
Conversión entre formatos
Para convertir entre diferentes formatos gráficos, simplemente debemos colocar la extensión del nuevo archivo, e ImageMagick lo hará automáticamente. Veamos algunos ejemplos.
Imaginemos que tenemos un archivo en formato .png
. Queremos convertirlo a formato .webp
. Para ello, simplemente llamamos al comando convert
e indicamos la imagen original y la imagen de destino:
$ convert imagen.png imagen.webp
Como hemos indicado imagen.webp
, ImageMagick ya sabe a que formato convertir y que nombre ponerle al archivo, así que lo realiza automáticamente.
Si no nos muestra ningún mensaje, significa que todo ha ido bien. En el caso de tener algún tipo de error, nos saldría por pantalla, tras ejecutar el comando.
Aunque depende de los formatos que estemos utilizando, la mayoría de ellos permiten indicar la calidad resultante de nuestra imagen. ImageMagick nos permite indicarla mediante un parámetro denominado -quality
:
$ convert imagen.jpg -quality 75 output.jpg
Esto hará que que nuestra imagen resultante tenga una calidad del 75%
respecto a la original, siendo 0%
una calidad peor y tamaño más pequeño, y 100%
una calidad mejor pero mayor tamaño de imagen.
En formatos como JXL
o WEBP
se puede indicar el parámetro -lossless
para que utilice la modalidad de compresión sin pérdidas, similar a como se hace con PNG
. Esta es una opción que puede funcionar muy bien con imágenes con pocos colores, sin texturas o con regiones muy grandes de un solo color.
Recuerda que la extensión de los archivos sólo es una sugerencia. Nada impide que tengamos un archivo con extensión .png
, que realmente sea un JPG
, por ejemplo. Una buena forma de asegurarnos de esto, es utilizar el comando identify
, que nos muestra información sobre la imagen:
$ identify logo.png
logo.png PNG 512x512 512x512+0+0 8-bit sRGB 44127B 0.000u 0:00.000
Observa que en este caso, nos está diciendo que el archivo es formato PNG
, que tiene un tamaño de 512x512
píxels y que ocupa aproximadamente 44KB
, entre otras cosas. Esto nos puede venir muy bien para realizar comprobaciones tras alguna conversión.
Dependiendo de nuestro sistema y la versión de ImageMagick, puede soportar ciertos tipos de formatos de imagen diferentes. Para saber exactamente cuales son los formatos que soporta nuestro ImageMagick, escribiremos el siguiente comando:
$ identify -list format
Nos saldrá una lista gigante con formatos soportados, indicando incluso si soporta sólo lectura o también es capaz de generarlos. Vamos a utilizar el comando grep
para filtrar y consultar sólo la información que nos interesa:
$ identify -list format | grep -i AVIF
AVIF* HEIC rw+ AV1 Image File Format (1.15.1)
En este caso, nos está mostrando que ImageMagick soporta el formato de imagen AVIF, tanto de lectura r
como de escritura w
.
Redimensionar imágenes
Algo bastante común cuando estamos convirtiendo imágenes es redimensionarlas y hacerlas más pequeñas para que ocupen menos. Esto se puede hacer muy facilmente con ImageMagick. Observa que simplemente añadimos el parámetro -resize
indicando luego el tamaño deseado (ancho x alto):
$ convert -resize 500x500 imagen.png imagen.jpg
De hecho, podemos incluso obviar el ancho o el alto, e ImageMagick lo redimensionará proporcionalmente, leyendo el tamaño real de la imagen y garantizando la proporción de aspecto, sin deformarla:
$ convert -resize 500x imagen.png imagen.jpg
Esto hace que las redimensiones sean muy sencillas de realizar.
Añadir una marca de agua
Si necesitamos añadir marcas de agua a una imagen, podemos utilizar ImageMagick. Simplemente, escribimos el siguiente comando:
$ convert imagen.jpg watermark.png -gravity southeast -composite imagen-con-watermark.jpg
Observa que hemos hecho varias cosas:
- 1️⃣ La imagen
imagen.jpg
es nuestra imagen original, ywatermark.png
es la marca de agua. - 2️⃣ El parámetro
-gravity
indica donde añadir la marca de agua. Abajo a la derecha, en este caso. - 3️⃣ El parámetro
-composite
indica que se añada la marca de agua sobre la imagen original. - 4️⃣ La imagen resultante se llamará
imagen-con-watermark.jpg
.
Recortar una zona (crop)
Si necesitamos recortar una zona de una imagen podemos utilizar la funcionalidad crop
de ImageMagick. Simplemente, escribimos el siguiente comando:
$ convert imagen.jpg -crop 200x200+50+50 output.jpg
Con el parámetro -crop
indicamos que queremos recortar un fragmento de la imagen, donde, de la imagen original, nos vamos a desplazar al punto 50x50
y luego, vamos a recortar un fragmento que se desplaza un tamaño de 200x200
.