Hoy:

27 abr 2011

ImageMagick: Transiciones entre imágenes

He aquí otro ejemplo de las maravillas que pueden surgir de ImageMagick. Esta vez trataremos las transiciones, acudiremos a un gran artista y programador: Fred Weinhaus . No podemos dejar de ver e investigar sus trabajos con ImageMagick:
 http://www.fmwconcepts.com/imagemagick/index.php
Hoy vamos a comprobar el script transitions para adaptarlo a nuestras necesidades en el momento oportuno, ya sean animaciones, slideshows, presentaciones..etc.
Enlace al script transitions:
http://www.fmwconcepts.com/imagemagick/downloadcounter.php?scriptname=transitions&dirname=transitions

Método:
Necesitamos dos imágenes principales: una de inicio y otra final.
Y entre las dos: otra que actuará de máscara para desarrollar la transición.
El script se ejecuta así:
./transitions  [opciones]  imagen1   imagen2   imagen-máscara   resultado.gif

Ejemplo
1-Planteamiento inicial:
En este ejemplo con el que voy a trabajar creo un directorio vacío donde colocaré estos elementos:
2 imágenes entre mis fotos favoritas, una imagen en tonos grises que actuará de máscara, y el script 'transitions'
Recordar que los scripts deben tener permisos de ejecución, en este caso:
chmod  +x  transitions
Y la preparación queda así:

1-Vamos con la máscara: ha de ser una imagen en tonos grises, con formas suaves para que las transiciones sean más artísticas
Para comprender cómo actúa la máscara para crear las transiciones hay que tener en cuenta: que el movimiento va del blanco al negro, atravesando los tonos grises.
Creamos con Gimp una imagen con degradado, en tonos grises, con las mismas dimensiones que las principales:

máscara con degradado

Ahora aplicamos la transición estilo "persiana" que nos facilita la máscara que hemos creado.
Añadimos la opción -m wipe, para tener un resultado más "visible" de la transición. Si usamos  -m dissolve el resultado es una transición más suave, con menos constancia de la imagen que interviene como máscara.
./transitions   -m wipe   Foto1.jpg   Foto2.jpg   mask.jpg   resultado.gif
Y aquí está el resultado, hacer click en la imagen para ver la animación:
transición "cortina"

Opciones importantes para personalizar la transición:

-m wipeSe obtiene una transición más clara, con más "vida"
-m dissolve Se obtiene una transición muy suave, con fundido
-f  (frames) Por defecto el valor es 20 (cuadros que intervienen en la animación)
-r  (reverse) La animación se crea al revés
-p  (pause)  En las animaciones cíclicas, pausa entre repeticiones. Por defecto: 50
-d  (delay) Espera entre cuadros de la transición. Por defecto: 20
-e   Acentuar el fundido, transición más suave

Si no queremos que nuestra animación se repita cíclicamente (loop), basta con cambiar un valor en la línea 321 del script. La opción loop la cambiamos de 0 (infinito) a 1:








Y finalmente, he aquí algunos ejemplos con diferentes máscaras, igualmente hacer click en las imágenes para ver las animaciones:

Transición "abanico"
Transición "espiral"
Transición "rectángulo"
Transición abstracta
Ahora a investigar con diferentes máscaras, velocidades..etc
En otros artículos desarrollaremos con ejemplos otros scripts de Fred Weinhaus.
Si tenéis alguna duda podéis presentar consultas  en los comentarios, o enviarme un correo.