Efecto remolino en ImageMagick
Con ImageMagick podemos crear un efecto remolino sobre una imagen con el operador -swirl, que deforma la imagen en círculo el número de grados que le pasemos como argumento.
Para ver este efecto, vamos a crear una imagen que tenga cuatro cuadros, dos rojos y dos azules:
convert \( -size 400x222 xc:Red xc:Blue -append \) \( xc:Blue xc:Red -append \) +append rojoyazul.jpg
Como el valor que le indicamos a -swirl es el número de grados que ha de girar el remolino, cuanto mayor sea este valor, mayor será remolino. Así, si le damos un valor de 45 el efecto será menor que, de 180:
convert rojoyazul.jpg -swirl 45 rojoyazul_swirl_45.jpg
convert rojoyazul.jpg -swirl 180 rojoyazul_swirl_180.jpg
Aunque el valor indicado sea en grados, podemos pasarle un valor superior a 360, no se limita a un círculo:
convert rojoyazul.jpg -swirl 400 rojoyazul_swirl_400.jpg
Incluso un valor extremadamente alto, como 800:
convert rojoyazul.jpg -swirl 800 rojoyazul_swirl_800.jpg
Tampoco tiene que preocuparnos el tamaño de la imagen original, ya que -swirl nunca desborda ese tamaño. Veámoslo con un valor muy superior al número de píxeles tanto de la anchura como de la altura de la imagen original, como puede ser 2800:
convert rojoyazul.jpg -swirl 2800 rojoyazul_swirl_2800.jpg
Como vemos, lo único que hace es que las ondas del remolino sean más finas, y con mayor número de giros, pero no desborda, por lo que siempre tenemos la seguridad de que las esquinas van a quedar encuadradas en la imagen.
Y, como siempre que podemos indicarle un valor a un parámetro de ImageMagick, podemos animar la imagen:
#!/bin/bash for x in 1 do for i in {0..360..2} do convert $1 -swirl $i png:- done for i in {359..1..2} do convert $1 -swirl $i png:- done done | ffmpeg -f image2pipe -i - ${1%%.*}.gif
Que, pasándole como argumento la imagen con la que hemos trabajado en este artículo, nos genera una animación como esta: