NEVEGADORES ADECUADOS PARA EL CORRECTO VISIONADO DE ESTE SITIO

ImageMagick: Manual en español.

[Un paseo por ImageMagick]


IX.-Distorsión de Imágenes.







IX-1.-Rotar imágenes: [-rotate]

Con dicha opción podremos rotar imágenes , a la derecha o a la izquierda, el número de grados que especifiquemos.

convert -rotate {±}g input output

El argumento g es el número de grados sexagesimales que deseamos rotar la imagen. Dependiendo del signo, positivo o negativo, la rotación se realizará en un sentido u otro:

También pueden utilizarse los signos < y > con el siguiente significado (Siendo W la anchura de la imagen y H su altura):

Cuando se utilicen los signos '<' y '>', debe entrecomillarse todo el argumento de la opción.

Cuando se utilicen ángulos de rotación que no sean múltiplos de 90° se aumentará el tamaño del output a base de zonas "vacias" en el lienzo, sobre todo en las esquinas del mismo. Dichos "huecos" pueden rellenarse de color mediante la opción [-background], precediendo a la opción [-rotate].

convert -background '#ff0000' -rotate -45 rotar.jpg rotar.png

Veamos [-rotate] en acción:


Vamos a aplicar la acción de rotar sobre la imagen rotar.jpg, de 200x150 px.
rotar.jpg

convert -rotate +45 rotar.jpg rotar-1.png


La rotación se ha realizado 45° a la derecha ( signo positivo). Obsérvense los espacios vacios en las esquinas.

rotar-1.png

convert -background red -rotate -45 rotar.jpg rotar-2.png


En este caso se ha realizado el giro de 45° a la izquierda (signo negativo) y, además de han rellenado de color rojo, con la opción [-background], los huecos de las esquinas.

rotar-2.png

convert -background red -rotate '<-30' rotar.jpg rotar-3.png


Aquí se ha utilizado el signo '<' (solo realizar la rotación si la anchura de la imagen es menor que su altura). Como las dimensiones de la imagen a rotar son 200x150 px, la rotación no se ha realizado.

rotar-3.png




IX-2.-Rodar (enrollar) imágenes: [-roll]

Con esta opción podemos "rodar" una imagen, verticalmente u horizontalmente.

La rotación vertical implica el tomar un rectángulo de la parte superior de la imagen y moverlo hacia la parte inferior. La rotación horizontal implica tomar un rectángulo de imagen de su lado izquierdo y moverlo hacia su lado derecho.

convert -roll ±x±y

Para rodar solo horizontalmente, no hace falta especificar el valor vertical (y). Para "enrollar" solo verticalmente, especificar como 0 el valor horizontal (x).


Partiendo de la imagen colon.png veamos los resultados con distintos valores de ±x±y

colon.png

+200+300

+200

-200+300

+0-300




IX-3.-Voltear verticalmente: [-flip]

Con esta opción el output resultane será la imagen especular-vertical del input.

convert -flip input output



grun.jpg

convert -flip gun.jpg grun-flip.png


grun-flip.png




IX-4.-Voltear horizontalmente: [-flop]

Con esta opción el output resultante será la imagen especular-horizontal del input.

convert -flop input output



grun.jpg

convert -flop gun.jpg grun-flop.png


grun-flop.png




IX-5.- Las opciones [-transpose] y [-transverse]

Estas dos opciones son equivalentes a:

-transpose = -flip -rotate 90

-transverse = -flop -rotate 90



Con un sencillo ejemplo se verá claramente la acción de estas dos opciones.

Partiendo de la figura Origen.png, veamos el resultado de aplicar cada una de las opciones.

convert Origen.png -transpose\
Transpose.png

convert Origen.png -transverse\
Transverse.png





IX-6.-Inclinar imágenes: [-shear]

Esta opción nos permite inclinar las imágenes, vertical y/u horizontalmente, un determinado ángulo, modificándose los ángulos del paralelogramo del lienzo.

En esta operación, como con la opción [-rotate], se incrementa el tamaño de la imagen resultante.

convert -shear ±Xx±Y input output



Cuando solo se especifica un número, sin el operador x, la modificación se aplica tanto al eje X como al eje Y.

Puede operarse con varias opciones [-shear] en una misma linea de órdenes.

Los grados Y se miden con respecto al eje X y los grados X con respecto al eje Y.

Podrá observarse que la inclinación X no afecta a la altura de las imágenes y la inclinación Y no afecta a su anchura.

Como sucedia con la opción [-rotate], frecuentemente se generan espacios en blanco que pueden rellenarse de color con la opción [-background].


Partimos de la imagen joc.jpg

convert -background blue -shear 20 joc.jpg joc-1.png

convert -background blue -shear 20x0 joc.jpg joc-2.png

convert -background blue -shear 0x50 joc.jpg joc-3.png

convert -background blue -shear 20x50 joc.jpg joc-4.png

convert -background blue -shear 20x0 -shear 0x50 joc.jpg joc-5.png

convert -background blue -shear 0x50 -shear 20x0 joc.jpg joc-6.png


joc.jpg

joc-1.png

joc-2.png

joc-3.png

joc-4.png

joc-5.png

joc-6.png

Debe advertirse que la opción [-shear] no es un buén medio de rotar imágenes: Para ello se dispone de [-rotate]





IX-7.-Ondular imágenes: [-wave]

Como [-shear], esta opción provoca un "desplazamiento lineal" en las imágenes. Sin embargo, [-wave], desplaza solo columnas de pixels verticalmente, de acuerdo con una función de onda.

convert -wave A input output

convert -wave AxL input output



Partimos de la imagen golfos.jpg, de 100x68 px

convert -wave 10x64 golfos.jpg golfos-1.png

Ajustando los argumentos de forma que la Longitus de onda sea el doble de la anchura de la imagen, esta será colocada en un arco:

convert -background Blue -wave 20x200 golfos.jpg golfos-2.png

Si repetimos la anterior linea de órdenes, pero con el valor de la amplitud negativo, podremos ver como se invierte el arco:

convert -background Blue -wave -20x200 golfos.jpg golfos-3.png

También podemos combinar esta opción con otras de distorsión, como puede ser [-rotate] :

convert -background Blue -rotate -90 -wave -20x200 -rotate +90 golfos.jpg golfos-4.png


golfos.jpg

golfos-1.png

golfos-2.png

golfos-3.png

golfos-4.png




IX-8.-Implosión-Explosión: [-implode]

La sintaxis de esta opcion es:

convert -implode {±}n

Con la opción [-implode], dependiendo del signo del argumento (n), podemos conseguir dos tipos de distorsión:

Implosión:El efecto obtenido puede compararse al que se obtendria si la imagen fuese siendo succionada por un torbellino imaginario situado en su centro. Este efecto lo conseguimos con argumentos de signo positivo.

Explosión: Efecto contrario al anterior: El "torbellino" imaginario expulsa los pixels de la imagen desde el centro hacia el exterior.

Veamos ambos efectos de [-implode]:


Implosión

Como se ha comentado más arriba, el efecto de implosión de la imagen se obtine con valores positivos del argumento.

Debe advertirse sobre la conveniencia de utilizar valores de n menores de 1.0. Con valores superiores a 1.0 la mayor parte de los pixels son "engullidos"..... desapareciendo. Veamos unos ejemplos:


Partimos de la imagen macba.png.

Veamos el resultado para distintos valores de n:



macba.png


n=0.3


n=0.5


n=0.7


n=1.0


n=1.5

Observemos ahora estas dos lineas de órdenes, con sus resultados:

convert -border 20x20 -bordercolor blue -implode 0.7\
-shave 18x18 macba.png macba-b.png

convert -border 20x20 -bordercolor none -implode 0.7\
-shave 18x18 macba.png macba-c.png



macba-b.png


macba-c.png

Se han creado unos bordes antes de implosionar la imagen, (el primero de color y el segundo, transparente) para, tras la implosión, recortarlos.



Explosión

Este efecto, como antes se ha comentado, se obtiene con valores negativos del argumento n. Veamos unos ejemplos:


Partiendo también de la imagen macba.png, veamos el resultado para los distintos valores de n:


n= -0.6


n= -1


n= -2


n= -3

En [hh,ericsur] podemos ver ejemplos del uso de la opción [-implode]





IX-9.-Arremolinar imágenes: [-swirl]

Esta opción actua como lo haria una amasadora: arremolida la imagen alrededor de un círculo el número de grados que especifiquemos en el argumento g.

convert -swirl ±g input output

Dependiendo del signo de g, el giro del "remolino" será:


Partiendo también de la imagen macba.png, veamos el resultado para los distintos valores de g:


g= 90


g= -90


g= 180


g= -180




IX-10.-Limitar las distorsiones a determinadas regiones de la imagen.

Hasta este momento hemos visto como las distintas opciones de distorsión actuaban sobre la totalidad de la imagen.

Mediante la opción [-region] podemos limitar a una determinada área de la imagen la acción de la distorsión.

Veamos un ejemplo:


convert \
-region 90x70+10+0 -swirl 400 \
-region 90x70+100+0 -swirl 400 \
-region 120x70+280+0 -implode 1.5 \
-region 100x70+380+0 -implode -7 \
-region 101x90+480-10 -wave 10x50 \
limit.png limit-b.png


En una región pueden ejecutarse varias distorsiones


convert -region 75x50+50+50 \
-background gray -rotate 30 -implode 0.5 \
tablero.png tablero1.png

(imagen de 150x150px; cada cuadrado: 25x25px)

Obsérvese que sobre la primera rotación se ha aplicado [-implode] y sobre este conjunto se ha aplicado la segunda rotación, con fondo rosado (pink).





IX-11.-Control del método de interpolación de pixels: [-interpolate]

Mediante esta opción configuramos el método de interpolación. Determina el color adecuado del pixel a partir de los colores de los pixels de su alrededor.

-interpolate metodo

Mediante la orden convert -list interpolate obtendremos la relación de los métodos de interpolación disponibles.

Es una opción importante cuando se utilizan opciones de distorsión de imágenes, como son [-distort], [-implode], etc..

Los métodos de interpolación son:

integer      Utiliza el valor del pixel superior-izquierdo.
nearest-neighbor      Utiliza el valor del pixel vecino más cercano.
average      Utiliza el valor propedio de los cuatro pixels mas cercanos.
bilinear      Utiliza una doble interpolación lineal de pixels. Es el método por defecto.
mesh      Divide el área a interpolar en dos triángulos.Es una variante de bilinear
bicubic      Utiliza una función bicúbica de los 16 pixels que rodean el punto.
spline      Utiliza curvas "spline". ( Los colores serán borrosos)
filter      Utiliza los parámetros de la opción [-filter]

En la mayoria de los casos, la mejor opción será la de utilizar el método bilinear, que es el utilizado por defecto por IM.





IX-12.-Control de los pixels virtuales: [-virtual-pixel].

Mediante esta opción podemos especificar el contenido de los pixels virtuales que puedan crearse durante el proceso de transformación de una imagen. Con ella definimos que fuente de color deberá utilizarse en la "creación" de esos nuevos pixels.

Generalmente el color de los pixels virtuales se toma a partir de la imagen original: [-virtual-pixel] nos posibilita especificar un color de fondo concreto.

-virtual-pixel metodo

El argumento, metodo, será la via mediante la cual fijemos las caracterésticas de los nuevos pixels.

Podemos obtener los posibles valores de metodo ejecutando el comando convert -list virtual-pixel :


 
background     El área alrededor de la imagen será el color de fondo de la propia imagen
black     El área alrededor de la imagen será de color negro.
constant     Será usado el color de fondo de la imagen..
edge     Se usará como patrón un pixel del margen de la imagen..
gray     El área alrededor de la imagen será de color gris.
mirror     La propia imagen será "reflejada" alrededor de los bordes.
random     Como patrón se eligirá aleatoriamente un pixel de la imagen.
tile     Se creará un "enbaldosado" con la propia imagen..
transparent     El área alrededor de la imagen será transparente.
white     El área alrededor de la imagen será de color blanco.
 

Esta opción tiene su principal aplicación cuando se utiliza junto con las opciones de distorsión de imágenes, como [-implode], [-distort],etc.. aunque también afecta a cualquier otra operación que de lugar a la creación de nuevos pixels fuera de la imagen original.

Veamos unos ejemplos del comportamiento de varios métodos, M, con una misma linea de órdenes:

convert -bordercolor white -border 3 -virtual-pixel M \
-resize 400% -implode 3 -resize 25% input.png output.png


input

output; M=Edge

output; M=Gray

output; M=Random

output; M=Mirror

output; M=Tile




[ Indice ] [ Inicio Sección] [ Sección Anterior ] [ 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