Ya tenía un rato sin escribir acá. Ahora veremos un post enfocado en algunos comandos útiles de ImageMagick para trabajar con imágenes. ImageMagick es una herramienta de línea de comandos muy versátil que permite trabajar con imágenes: editar, crear, recortar, redimensionar, etc. Incluso trabaja con archivos PDF.
Contenido
Convertir una imagen PNG a JPG
magick imagen.png imagen.jpg
Se puede jugar con la calidad de la imagen usando el flag quality
(1-100):
magick image.png -quality 50 image.jpg
Con esto la imagen bajará de calidad y por lo tanto el tamaño.
Convertir imágenes en batch con ImageMagick
Si necesitas hacerlo con muchas imágenes, por ejemplo, convertir todas las imágenes PNG de un directorio a JPG.
for file in *.png; do magick "$file" "${file%.png}.jpg"; done
Si te quieres evitar el uso de for
, también puedes hacerlo usando una de los programas que vienen con ImageMagick: mogrify
. Trataremos de convertir todos los JPG de un directorio a WEBP.
mogrify -format webp *.jpg
Es posible que las imágenes no siempre sean .jpg
, algunas pueden ser .Jpg
o .JPG
. Entonces para ellos podemos usar algunos comandos:
find . -type f -iname "*.jpg" -exec mogrify -format -quality 75 webp {} \;
El parámetro -iname
desactiva Case Sensitive, por lo que coincidirá con .jpg, .JPG, .Jpg, etc. Luego procedemos a convertir a WEBP bajando su calidad.
También se puede también de la siguiente manera, aunque es mucho más complejo cuando son más variaciones:
mogrify -format webp *.{jpg,JPG,Jpg,jpG,JpG,jPg,jpG,jPG}
Cambiar el tamaño de una imagen
Primero hay que diferenciar tamaño, que se refiere a los pixeles, por ejemplo, 100×100 y su resolución, la cual hace referencia a la densidad de pixeles. Esto es relevante porque muchas veces vamos a querer bajar el tamaño sin modificar su tamaño.
Cambiar el tamaño:
magick image.jpg -resize 800x600 image_new.jpg
Cambiar la resolución sin cambiar el número total de píxeles:
magick image.jpg -density 300 imagen_new_dpi.jpg
Cambiar tamaño y resolución:
convert image.jpg -resize 800x600 -density 300 image_final.jpg
Recortar una imagen con ImageMagick
magick image.jpg -crop ${ancho}x${alto}+${horizontal_pos}+${vertical_pos} image_cut.jpg
La porción ${ancho}x${alto}
se refiere al tamaño de la imagen que vamos a extraer, o sea, al pedazo que le vamos a morder.
La otra parte ${horizontal_pos}+${vertical_pos}
nos indica los ejes X y Y respectivamente. Son las coordenadas desde las cuáles vamos a comenzar a extraer la nueva imagen:
magick image.jpg -crop 300x50+120+200 image_cut.jpg
Quiero una imagen de 300×50 pixeles comenzado en el punto 120,200 de la imagen original.
Si queremos la esquina superior izquierda:
convert image.jpg -crop 200x535+0+0 image_cut.jpg
Parámetro -gravity
-gravity
en ImageMagick indica cómo interpretar las coordenadas que sigan en el comando. Por ejemplo, si queremos recortar una imagen desde el centro, puedes establecer -gravity Center
. Esto significa que las coordenadas que especifiques para el recorte se calcularán desde el centro de la imagen en lugar de desde la esquina superior izquierda.
magick image.jpg -gravity Center -crop 200x200+0+0 imagen_recortada.jpg
+0+0
indica que no hay desplazamiento adicional desde el centro.
Además de Center
podemos usar:
- NorthWest: Esquina superior izquierda (default).
- North: Centro superior.
- NorthEast: Esquina superior derecha.
- West: Centro izquierdo.
- Center: Centro de la imagen.
- East: Centro derecho.
- SouthWest: Esquina inferior izquierda.
- South: Centro inferior.
- SouthEast: Esquina inferior derecha.
Convertir una imagen a blanco y negro
magick image.jpg -colorspace Gray image_bn.jpg
Puedes aplicar niveles con el switch -threshold
:
magick image_original.jpg -threshold 50% image_bn_threshold.jpg
También funciona con -monochrome
:
magick image_original.jpg -monochrome image_bn_monochrome.jpg
Estos con los comandos útiles de ImageMagick y comunes que uso en el día a día, después crearé otro post para trabajar con archivos PDF.
¡Gracias por leer!