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


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

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