| [ Indice General ] | [ Sección Siguiente ] |
NEVEGADORES ADECUADOS PARA EL CORRECTO VISIONADO DE ESTE SITIO |
![]() |
ImageMagick ( a partir de hora, IM ) es una aplicación constituida por una poderosa colección de herramientas orientadas a la manipulación y procesamiento de imágenes en linea de comandos. Con IM se pueden leer, escribir y manipular imágenes en mas de 100 formatos distintos.
En las siguientes secciones veremos como con unas sencillas órdenes en la linea de comandos podemos, por ejemplo, redimensionar, añadir una marca de agua, cambiar el formato,recortar, girar, aplicar efectos especiales, renombrar... etc una o varias imágenes a la vez. Todo ello de forma dinámica, viendo el resultado "on-line", ya siendo en una URL determinada o localmente en nuestra computadora. Es por ello que , para muchas tareas de manipulación de imágenes, IM puede representar una opción mas apropiada que otras aplicaciones con entorno gráfico, como Adobe Photoshop o GIMP.
Otra interesante posibilidad de IM es la de operar con archivos animados. Puede usarse IM para operar sobre determinados archivos de imágenes animados así como para convertir un determinado conjunto de imágenes en una secuencia animada. En fin, vamos a presentar a continuación un breve resumen de algunas de la operaciones que podemos realizar con IM:
Todo ello es posible gracias a las distintas herramientas que nos ofrece IM.
Las principales herramientas ( a partir de ahora, comandos) de que disponemos son:
Con el objeto de distinguirlos del texto corriente, cuando se citen elementos de la línea de órdenes de IM ( comandos, opciones, operadores...) se hará incluyéndolos entre [ ].
|
En este manual va a partirse de la presunción de que IM se encuentra ya instalado y configurado. Es relativamente facil hallar en la red documentación detallada y en castellano sobre estos aspectos y para cualquier plataforma. La redacción de este manual se ha realizado en base a una instalación de IM en una plataforma UNIX ( Linux, Mac OSX, FreBSD etc..). También debe advertirse que este es un manual de iniciación a IM, por lo que no se van a tratar todas las herramientas anteriormente descritas ni se agotarán ( ¡ ni mucho menos! ) las posibilidades de los comandos, opciones y operadores que se traten. Pretende ser, como anuncia el subtítulo, una especie de paseo por ImageMagick, que brinde la oportunidad de entreveer las posibilidades que nos ofrece esta aplicación. Con IM es dificil estructurar un tutorial de forma lineal, progresiva. Será frecuente "toparse" con conceptos y opciones cuya exposición se realiza en secciones posteriores. Se ha intentado solventar este inconveniente mediante un (esperemos que adecuado...) sistema de enlaces y referencias. Una última consideración: Existe la intención de seguir desarrollando este Manual con la incorporación de nuevas secciones que traten las herramientas (comandos) y opciones no expuestos en esta primera entrega así como de otras secciones que traten com mayor profundidad aspectos aquí solo esbozados. Dichas nuevas secciones se irán incorporando a este sitio y a su Índice |
Mediante la orden:
man imagemagick
tendremos acceso a las páginas man generales de IM.Si necesitamos información referente a alguna de las herramientas de IM podemos utilizar cualquiera de las siguientes órdenes:
man comando
comando -help
Así para obtener información sobre [convert] :
man convert
O, también, con el operador [-help]:
convert -help
Una línea de órdenes de IM puede ser tan simple como:
convert imagen.jpg imagen.png
o tan compleja como:
convert label.gif +matte \
\( +clone -shade 110x90 -normalize -negate +clone -compose Plus -composite \) \
\( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte \) \
-delete 0 +swap -compose Multiply -composite button.gif
Aunque en cada una de las herramientas (comandos) que se tratarán en este manual se describirá la sintaxis de la linea de órdenes, podriamos considerar que obedece al siguiente modelo general:
comando input [-opciones [argunentos]] output
Podemos ver tres elementos esenciales :
Comando: Es la herramienta de IM que utilizamos ( convert, mogrify, animate ...etc )
Input: Archivo ( o archivos, ya que puede haber más de uno) sobre el que se realizarán las operaciones declaradas en la línea de órdenes.
Opciones: Con ellas especificamos las operaciones (acciones) a realizar sobre los Inputs. El nombre de las opciones va precedido del signo -
Output: Archivo que contendrá el resultado de las operaciones realizadas sobre el/los input/s.
También seria válida la siguiente sintaxis:
convert [-opcion [argumentos]] input output
Sobre las dos sintaxis posibles que se han planteado, debemos hacer una consideración:
IM lee el imput y luego le aplica las transformaciones especificadas para generar el output. Si especificamos el input después de las opciones, IM leerá estas y las aplicará sobre el primer archivo de imagen que encuentre en la linea de órdenes.
Asi, ( adelantamos acontecimientos.... ) para convertir un determinado archivo en formato JPG ( input.jpg) en otro de formato PNG (output.png) la orden seria:
convert input.jpg output.png
En este caso no se ha utilizado ninguna de las opciones del comando [convert]. Se trata de una acción "directa" del comando que no precisa de opciones.
Veamos ahora la siguiente linea de órdenes:
convert input.jpg -resize 600x400 output.png
En este caso, mediante la opción [-resize] redimensionariamos el input al tamaño indicado en el argumento de la opción ( 600x400 pixels ) y guardaríamos el resultado como un archivo PNG (output.png)
Para mayor información sobre la sintaxis de la línea de órdenes en IM, puede consultarse el apéndice :
[Anatomia de la línea de comandos en Imagemagick]
Con cada una de las herramientas se tratarán también las distintas opciones . Pero no está de más, en este momento, hacer una serie de consideraciones generales sobre ellas, relacionadas con la sintaxis de la linea de comandos.
Veremos que hay determinadas opciones , tales como [-negate], [-resize] , [-crop], etc que pueden aparecer en la linea de órdenes antes o después de la imágen sobre la que se aplicarán.
Los problemas relativos a la posición de las opciones en una línea de órdenes pueden aparecer cuando se opera con más de una imagen ( mas de un input). Veamos la siguiente orden en la que intervienen dos inputs ( red.png y blue.png):
convert red.png blue.png -append -rotate 90 b_r.png
En la anterior orden, las opciones se aplicarian en el orden en que se han escrito en la línea de comandos:
En primer lugar se aplicaria la opción [-append] que nos generaria una imagen compuesta por la unión vertical de las dos imágenes input ( red.png y blue.png ) para, posteriormente, aplicar la opción [-rotate 90] que la rotaria 90º en el sentido de las agujas del reloj, dándonos el output b_r.png. Veamos gráficamente la secuencia:
| convert | ![]() |
![]() |
-append | ![]() |
-rotate 90 | ![]() |
Si se deseara aplicar primero la rotación para, posteriormente, aplicar [-append] sobre las dos imágenes rotadas deberíamos cambiar el orden de las opcioens en la linea de comandos:
convert red.png blue.png -rotate 90 -append b_r.png
Veamos gráficamente la secuencia de esta línea de órdenes:
| convert | ![]() |
![]() |
-rotate 90 | ![]() |
![]() |
-append | ![]() |
Vamos a detenernos unos momentos para explicar algo sobre las opciones de comando;también denominadas operadores, aunque en este manual reservaremos el término operador para un determinado tipo de opciones.
En IM podemos agrupar las opciones en dos grandes categorias, que denominaremos:
Se utilizan para fijar o guardar determinados valores que serán utilizados más tarde por otras opciones (Opciones operativas).
Muchas de las opciones de ajustes suelen poder tomar dos formas, la "normal", [-opción] o la de [+opción]. Esta última forma suele ser la usada para desactivar los ajustes o reiniciarlos a los ajustes por defecto. Esto nos permite eliminar de forma rápida y fácil el efecto de un ajuste realizado mediante este tipo de opciones.
Las opciones de ajustes podrian subdividirse en varias sub-clases:
Unas que controlarán el funcionamiento de posteriores Opciones operativas. Ejemplos de ellas son las que ajustan el color, el tamaño de la fuente, la situación de imágenes y texto.. etc. Podemos citar:
[-fill], [-background], [-bordercolor],[-font],[-pointsize],[-stroke],[-strokewidth], [-box], [-dither], [-gravity],[-affine], [-virtual-pixel],[-interpolate]
Otras, denominados "ajustes de entrada" (input settings) que se ceñirán a controlar la creación de imágenes mientras están siendo creadas o mientras se están leyendo. Normalmente estas son opciones de ajustes utilizadas para asignar o sobreescribir determinados metadatos asociados con imágenes. Ejemplos de este tipo de opciones de ajustes son:
[-label] [-delay] [-dispose] [-page] [-comment] [-size]
Podriamos considerar también los "ajustes de salida" , que se utilizarán solo durante el proceso de grabado de la imagen final (output) en el disco. Estas son opciones del tipo:
[-compress] [-quality] [-format] etc.
Finalmente estarian los ajustes de salida y depuración, que controlarian, en general, como IM realiza sus tareas. Son opciones como:
[-verbose] [-monitor] [-debug] [-quiet] [-warnings] etc..
Son las que de una forma u otra modificarán la imagen. Pueden utilizar para ello otras opciones (las opciones de ajuste) que se hayan declarado, previamente, en la linea de comandos.
Pueden considerarse varias subcategorias:
Leen imágenes desde un archivo , una pipeline o generan nuevas imágenes. Se limitarán a añadir nuevas imágenes a aquellas que ya estén en memoria, pero no actuarán en absoluto sobre las imágenes ya leidas.
Son opciones de este tipo:
Como puede suponerse, pueden verse afectados por cualquier ajuste que definamos previamente, especialmente por [-size], que nos definiria el tamaño de la imagen que generaríamos, o cualquier otro ajuste de entrada.
Modificarán todas las imágenes que ya hayan sido leidas en memoria. Sin embargo, cada imagen es modificada separadamente de las otras. En este grupo se encuentran la mayoria de las opciones de IM.
Debido a que actuan en el momento en que son "encontradas" en la linea de órdenes, es conveniente que se coloquen después de las imágenes sobre las que han de operar. Si hay mas de una imagen, la operación se aplicará sobre todas ellas, una a una. Es por ello que se debe ser cuidadoso a la hora de emplazar imágenes y opciones en la línea de órdenes.
Tienen de especial el que modifican una lista completa de imágenes como si fuera una sola entidad. Pueden reeemplazar la lista de imágenes por una sola imagen compuesta o modificar cada imagen dependiendo de las otras, tanto de las previas como de las siguientes a ella. Son opciones de este tipo:
[+append] [-mosaic] [-flatten] [-fx] [-composite] [-combine] [-separate] [-coalesce] [-deconstruct] [-layers] [-clut]
Debemos recordar que este tipo de opciones manejan una secuencia de imágenes como una sola entidad, por lo que las imágenes pueden ser añadidas, reemplazadas o eliminadas. Muchas de las opciones de esta categoria se utilizan para fusionar múltiples imágenes individuales en una sola imagen compuesta.
Afectan al orden de las imágenes que se encuentran en memoria. No afectan a las imágenes en si, solo las reordena, duplica o elimina. Pertenecen a este grupo:
[ ( ] [ ) ] [-swap] [-delete] [-clone] [-insert] [-reverse]
Debe insistirse en que es muy importante tener clara la distinción entre Opciones de ajustes y Opciones operativas: las opciones de ajustes se guardan para un posterior uso, las opciones operativas se aplican inmediatamente.
Un aspecto importante a tener en cuenta cuando tratamos de la sintaxis de la línea de comandos es que IM trabaja con listas ordenadas de imágenes, no con imágenes aisladas. En general todas las opciones y operadores pueden ser aplicadas a todas las imágenes de una secuencia.
Con la utilización de paréntesis podemos establecer el orden en que se procesarán las opciones que hayamos implementado en una linea de comandos.
El signo de apertura de paréntesis, '(', tendrá como efecto la apertura de una nueva secuencia de imágenes en la que actuarán todos los operadores que incluya. El signo de cierre de paréntesis, ')', ocasinará que el resultado de la anterior operación se añada al final de la secuencia de imágenes previa.
En otras palabras, se realizarán una serie de operaciones sobre una determinada secuencia de imágenes antes de añadir el resultado al final de la secuencia previa. Ello nos permite trabajar separadamente sobre secuencias de imágenes concretas, incorporando el resultado de estas operaciones a la secuencia general de la línea de órdenes.
Cuando se utilizen en un entorno UNIX ( Linux; Mac..) los paréntesis deben "escaparse" precediéndolos del signo \ a fin de evitar que puedan ser confundidos con un comando shell. En MSDOS no se precisa la utilización del carácter de "escape".
Veamos un ejemplo:
convert imagen1.jpg imagen2.jpg imagen3.jpg imagen4.jpg -negate \
+append imagen_resultado.jpg
Con la anterior línea de comandos se aplicaria primero la opción [-negate] a todas la imágenes y, posteriormente, se les aplicaria la opción [+append].
Veamos ahora esta misma orden utilizando paréntesis para modificar el comportamiento de las opciones:
convert imagen1.jpg imagen2.jpg \( imagen3.jpg -negate \) imagen4.jpg \
+append imagen_resultado.jpg
Con la anterior línea de órdenes aplicaríamos a las imágenes encerradas en el paréntesis (imagen3.jpg) las opciones contenidas en el mismo ([-negate]) sin afectar a las otras imágenes de la secuencia y se añadiría el resultado después de imagen2.jpg aplicándose entonces, a toda la secuencia resultante, la opción [+append], dando como resultado en output (imagen_resultado.jpg).
A la hora de utilizar paréntesis deben tenerse en cuenta las siguientes reglas:
Los paréntesis deben considerarse como operadores, esto es, deben separarse de los otros argumentos por un espacio.
\(imagen3.jpg -negate\) : No es correcto ya que no hay separación entre la apertura del paréntesis, '\(', y la primera imagen que contiene, imagen3.jpg, ni entre la opción -negate y el signo de cierre del paréntesis, '\)'
\( imagen3.jpg -negate \): Es corercto, hay las separaciones adecuadas entre los distintos elementos.
Los paréntesis solo marcan el inicio y el fin de una secuencia separada de imágenes. No limitan los valores de las opciones de ajustes , solo limitan las imágenes sobre las que deberán aplicarse opciones-operador . Una opción de ajuste actuará através de toda la línea de órdenes, con independencia de los paréntesis, hasta que sea desactivada o sea sustituida por otra opción de ajuste. Lo veremos mejor con un ejemplo:
|
convert -pointsize 18 -font Garuda-Bold label:Uno \( label:Dos \) |
|
El tamaño de letra determinado por la opción [-pointsize] se aplicará a todas las etiquetas generadas por [label:] , con independencia de los paréntesis.
El color del texto, determinado por [-fill] se aplicará a los inputs que siguen a su declaración: label:Tres y label:Cuatro
El tipo de fuente determinado por la primera opción [-font], Garuda-Bold, se aplicará hasta que sea desactivado o sustituido por otra, en nuestro caso, por DejaVu-Sans-Bold, en la segunda opción [-font].
-respect-parenthesis
Recordemos que los paréntesis solo marcan el inicio y el fin de una secuencia separada de imágenes. No limitan los valores de las opciones de ajustes , solo limitan las imágenes sobre las que deberán aplicarse opciones-operador. La opción [-respect-parenthesis], sobreescribe este comportamiento.
Veamos los resultados de estas dos líneas de órdenes: |
|
convert -pointsize 18 label:Uno | ![]() |
convert -respect-parenthesis -pointsize 18 label:Uno |
![]() |
Como podemos observar, en la primera línea de órdenes la opción de ajuste [-pointsize] se va aplicando haciendo caso omiso a los paréntesis ( cada opción aplicará su valor a los inputs que la siguen, hasta encontrar otra opción opción con otro valor)
En la segunda línea de órdenes, con la opción [-respect-parenthesis], se respetan los paréntesis.
Nos mostrará información sobre la ejecución de la orden.
En el siguiente ejemplo nos muestra la informacion referente a la
ejecución del comando [convert]
convert -verbose bilbo1.jpg bilbo1.tif
asd53@ubuntu:~/imagenes$ convert -verbose bilbo1.jpg bilbo1.tif
bilbo1.jpg JPEG 3214x2255 3214x2255+0+0 DirectClass 8-bit 1.84672mb 0.450u 0:02
TIFF Directory at offset 0x0 (0)
Image Width: 3214 Image Length: 2255
Resolution: 240, 240 pixels/inch
Bits/Sample: 8
Compression Scheme: JPEG
Photometric Interpretation: RGB color
FillOrder: msb-to-lsb
YCbCr Subsampling: 1, 1
Orientation: row 0 top, col 0 lhs
Samples/Pixel: 3
Rows/Strip: 16
Planar Configuration: single image plane
Software: ImageMagick 6.3.7 02/19/08 Q16 http://www.imagemagick.org
DocumentName: bilbo1.tif
ImageDescription: este es una toma de asd53
JPEG Tables: (289 bytes)
bilbo1.jpg=>bilbo1.tif JPEG 3214x2255 3214x2255+0+0 DirectClass 8-bit 3.79278mb 1.050u 0:02
Podemos averiguar la versión de IM instalada mediante la opción [-version] con cualquier comando. Por ejemplo:
convert -version
composite -version
mogrify -version
.... etc
asd53@ubuntu:~$ convert -version
Version: ImageMagick 6.3.7 02/19/08 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
En las siguientes secciones vamos a ir entrando ya en la utilización de IM.
| [ Indice ] | [ Inicio Sección] | [ Sección Siguiente ] |
Licencia: "ImageMagick: Manual en español". By Antoni Serra Devecchi is licensed under a Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 España License.
NEVEGADORES ADECUADOS PARA EL CORRECTO VISIONADO DE ESTE SITIO |
![]() |