Cómo manipular imágenes desde el terminal

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


10 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   glorfindel dijo

    estàs usando mogrify?? fijate en el ejemplo del post.
    saludos! Pablo.

  2.   RubenGnu dijo

    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

  3.   Ainhoarepresa dijo

    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

  4.   katerine dijo

    que es una terminal

  5.   jathan dijo

    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.

  6.   Enrique dijo

    Un pequeño aporte a este brillante post!

    Para convertir a B&W:

    convert -monochrome image.png image-bw.png

    Saludos

    1.    usemoslinux dijo

      Gracias x el aporte!
      Abrazo! Pablo

  7.   Moises Garnica Radilla dijo

    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!

    1.    Bisieve dijo

      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»

  8.   linuxpro dijo

    gracias muy bueno