Cómo manipular imágenes desde el terminal

8
15256

ImageMagick es una aplicación que nos permite manipular imágenes a través de la línea de comandos y que sirve para prácticamente todos los formatos. Con ella, también es posible automatizar las acciones sobre las imágenes contenidas en una carpeta (conversión, redimensionado, etc…)
Vamos a ver una lista de comandos útiles de ImageMagick:

Obtener información de una imagen.


identify -ping image.png

Obtener aún más información.

identify -verbose image.png

Conocer la lista de colores utilizados en una imagen.

identify -list color image.png

Convertir una imagen PNG en JPG

convert image.png image.jpg

Convertir una imagen PNG en JPG indicando la calidad de conversión.

convert -quality 96 image.png image.jpg

Convertir todas las imágenes PNG en JPG contenidas en una carpeta

mogrify -format png *.jpg

Convertir todas las imágenes (*.jpg, *.png) en PDF

convert images*.* archivo.pdf

Cambiar el tamaño de una imagen

convert -resize 48×48 image.png image-mini.png

Cambiar el tamaño de todas la imágenes de una carpeta

mogrify -resize 48×48 *.png

Cambiar el tamaño de una imagen indicando el ancho

convert -resize 620x image.png image-620.png

Cambiar el tamaño de una imagen indicando el alto

convert -resize x100 image.png image-100.png

Crear un Favicon

convert -colors 256 -resize 16×16 image.jpg favicon.ico

Convertir una imagen en color en blanco y negro

convert -type image.jpg image-noir-blanc.jpg

Añadir un borde transparente de 1 pixel alrededor de una imagen

convert -bordercolor Transparent -border 1×1 image.png image-borde.png

Añadir un borde negro de 10 pixels alrededor de una imagen

convert -bordercolor #000000 -border 10×10 image.png image-borde.png

Crear un negativo de una imagen

convert -negate image.png image-negate.png

Rotar una imagen en vertical

convert -flip image.png image-inversee.png

Rotar una imagen de izquierda a derecha

convert -flop image.png image-inversee.png

Usar el GUI de ImageMagick

display image.png

↓↓↓¿Te sirvió este artículo?, Vota por nosotros en los OpenAwards↓↓↓

8 COMENTARIOS

  1. Copiaste y pegaste?

    Pone una letra ‘x’ en lugar del signo por ‘×’ que pone el editor de texto de la página.

    Saludos

    Rubén

  2. hola
    he estado probandolo y está muy bien, pero el comando para crear un favicon no me funciona, este es el error que me da:
    convert: invalid argument for option `-resize’: 16×16 @ error/convert.c/ConvertImageCommand/2343.
    saludos

  3. Muy buena selección de comandos y claridad en su sintaxis. Anteriormente tenía muchos problemas tratando de usar convert para redimensionar un lote de imágenes y ahora que use mogrify para el mismo propósito, todo salió bien. Muchas gracias Pablo.

  4. Hola, esta informacion la he vista en muchas webs!
    Pregunta: Como puedo realizar la escala a otro directorio?
    Ejemplo: convert -scale 50% -quality 80% *.jpg > escalado/
    El ejemplo no funciona, como tendria que ser de una carpeta x a una subcarpera x/escalado ??
    De antemano, muchas gracias!

    • Yo hice un script para ello y las modificadas se me guardan en otra carpeta.
      El script lo ubico dentro de la carpeta donde tengo todas las imágenes que quiero modificar, y lo ejecuto desde la consola (el fichero debe tener permiso de ejecución). El código que voy a poner a continuación, lo pegas en un fichero y le das el nombre que quieras (yo le puse al final .sh para saber que es un script con sólo leer el nombre del fichero).

      Copio y pego el código por si te sirve de algo:

      #!/bin/bash
      ###Cambiar el tamaño de una imagen indicando el ancho y la calidad
      # convert -quality 86 -resize 620x image.png image-620.png
      ###Cambiar el tamaño de una imagen indicando el alto y la calidad
      # convert -quality 86 -resize x100 image.png image-100.png

      + info: https://blog.desdelinux.net/como-manipular-imagenes-desde-el-terminal/

      #
      #===============================================================
      DIRECTORIO=pwd
      cd $DIRECTORIO
      resized_directory=”resized_img”
      $(mkdir “$resized_directory” 2>/dev/null)
      TEMP=”listado_img” #fichero temporal interno
      #
      #lista de imágenes del directorio en un fichero temporal
      ls *.png 2>/dev/null >> $resized_directory/$TEMP; ls *.PNG 2>/dev/null >> $resized_directory/$TEMP;
      ls *.jpg 2>/dev/null >> $resized_directory/$TEMP; ls *.JPG 2>/dev/null >> $resized_directory/$TEMP;
      ls *.jpeg 2>/dev/null >> $resized_directory/$TEMP; ls *.JPEG 2>/dev/null >> $resized_directory/$TEMP;
      ls *.gif 2>/dev/null >> $resized_directory/$TEMP; ls *.GIF 2>/dev/null >> $resized_directory/$TEMP
      #
      #recorrido de imágenes dentro del directorio
      echo -n “Procesando, espere”
      while read imagen
      do
      echo -n “.”
      convert -quality 90 -resize 1000x $imagen $resized_directory/$imagen
      done < $resized_directory/$TEMP
      echo “”
      #
      #eliminamos el fichero temporal
      rm $resized_directory/$TEMP
      echo “finalizado con éxito”

Dejar una respuesta