Comandos de ImageMagick I: convert y mogrify

16 Agosto 2018 by 0 Comment Multimedia 9683 Views
Valora este artículo
(0 votos)

ImageMagick no es un único progrma, sino un conjunto de comandos complementarios, pero cada uno con unas funcionalidades distintas. En esta ocasión veremos convert y mogrify, dos comandos que realizan modificaciones sobre ficheros de imágenes, pero con una diferencia fundamental: convert genera un nuevo fichero con las modificaciones mientras que mogrify aplica las modificaciones sobre el fichero origen. 

Con mogify ahorramos espacio en disco ya que no generamos nuevos ficheros, pero sus cambios son irreversibles. 

Con convert mantenemos la imagen original intacta, pero, a cambio, consumimos espacio en disco con cada nuevo fichero. Y cuando generamos vídeos u otros procesos en lotes grandes, a veces corremos el riesgo de llenar el disco duro del ordenador, máxime si hacemos vídeos con ratios de 60 fotogramas por segundo y en 4k. (Cada fotograma en png puede pesar 7/8 Mb x 60 fotogramas por segundo, podemos estar generando entre 400 y 500 Mb por cada segundo de vídeo. ¡Más de 20 Gb por minuto! Y si a esto le añadimos los ficheros auxiliares que podamos usar para generar el vídeo, como cartelas, fotogramas para superponer, subtítulos, degradados... tenemos que trabajar con cuidado. iremos viendo cómo optimizar el trabajo. 

Uso de convert y mogrify


Dado que la principal diferencia entre convert y mogrify es que con convert genera un nuevo fichero y que mogrify no lo genera, a la hora de invocarlos, con convert deberemos especificar el nombre del nuevo fichero y con mogrify no hace falta, ya que sobreescribe el fichero de origen. 

Veamos el uso más habitual de estos comandos:

convert imagenoriginal.png -parametro valor imagendestino,png
mogrify -parametro valor imagenoriginal.png

Y ahora, un ejemplo real sobre el fichero torres.jpg:

torres.jpg

convert torres.jpg -negate torresnegadas.jpg

torresnegadas.jpg

Y seguimos teniendo la imagen original:

ls
torres.jpg  torresnegadas.jpg

Ahora, probemos con mogrify:
mogrify -negate torres.jpg
Seguimos teniendo dos ficheros:
ls
torres.jpg  torresnegadas.jpg

Pero ambos son iguales:

torresnegadas.jpg

torres.jpg

 

El orden importa

Como es obvio, si en convert ponemos primero el fichero de destino antes que el de origen, no podrá leer el fichero original y por lo tanto, no podrá procesar las modificaciones:

convert alapiz.png -charcoal 1 torres.jpg 
convert.im6: unable to open image `alapiz.png': No existe el archivo o el directorio @ error/blob.c/OpenBlob/2638.
convert.im6: unable to open file `alapiz.png' @ error/png.c/ReadPNGImage/3667.
convert.im6: no images defined `torres.jpg' @ error/convert.c/ConvertImageCommand/3044.

Por lo que tenemos que escribir bien el orden:
convert torres.jpg -charcoal 1 alapiz.jpg
alapiz.jpg
Con mogrify también es importante el orden, si escribimos el fichero antes de las modificaciones, no las aplica, ya que no sabe qué modificaciones aplicar al fichero:

mogrify torresnegadas.jpg -charcoal 1
torresnegadas.jpg
Sin embargo, si escribimos las modificaciones antes del fichero, las aplica:

mogrify -charcoal 1 torresnegadas.jpg

torresnegadas.jpg


Diferencias entre convert y mogrify cuando no hay fichero de origen

Generar lienzos

Convert puede generar ficheros desde 0, mogrify, no. Como vimos en el artículo sobre la generación de lienzos con ImageMagick, con el modificador xc de convert e indicando el tamaño, podemos generar lienzos:
convert -size 500x250 xc:red imagenroja.jpg

imagenroja.jpg

 Pero con mogrify no:

convert -size 500x250 xc:red imagenroja.jpg
mogrify.im6: no encode delegate for this image format 'blue' @ error/constitute.c/WriteImage/1209.
mogrify.im6: unable to open image `imagenazul.jpg': No existe el archivo o el directorio @ error/blob.c/OpenBlob/2638.

Textos


Con convert podemos crear una imagen con un texto con la siguiente instrucción:
convert -size 500x250 -gravity Center -background blue -font FreeMono-Negrita label:"Linux Center" cartela_Linux_Center.jpg

cartela_Linux_Center.jpg
Y con mogrify, básicamente igual que cuando generamos un lienzo: :

mogrify -size 500x250 -gravity Center -background green -font FreeMono-Negrita label:"Linux Center" cartela_Linux_Center_verde.jpg

mogrify.im6: no encode delegate for this image format 'Linux Center' @ error/constitute.c/WriteImage/1209.
mogrify.im6: unable to open image `cartela_Linux_Center_verde.jpg': No existe el archivo o el directorio @ error/blob.c/OpenBlob/2638.

Así que, si no hay imagen previa, no queda otra opción que usar convert. Por lo demás, la diferencia es si queremos crear nuevo fichero o no. 

Información adicional

  • Nivel de dificultad: Bajo
  • ¿Tutorial sacado de otra web/foro?: No

¡Atención! Este sitio usa cookies y tecnologías similares.

Si no cambia la configuración de su navegador, usted acepta su uso. Saber más

Acepto

Vea nuestra política de cookies y enlaces de interés aquí