jueves, 1 de junio de 2017

Crear GIFs animados

Empecemos por lo obvio: ¿Qué es un GIF animado...?
Pues un GIF animado no es más que una secuencia de imágenes en 'Graphics Interchange Format' que se va repitiendo continuamente y que, a un ritmo adecuado, aparenta una 'animación'.
Ya dije el otro día que uno de mis blogs favoritos es el blog de ‘desdelinux.net’. Que, como está realizado por un equipo, y además está abierto a colaboraciones, tiene una importante producción semanal de ‘entradas’ al Blog, con lo cual es bastante entretenido. Hace unos días publicaron una titulada ‘Cómo crear GIF de imagenes en Linux desde la consola’ que, aunque no tendrá, para mi, mucho interés práctico, si que es algo que conviene apuntar, para recordarlo, por si llega el caso.
Y, como siempre, no quiero hacer un copy&paste, sino que lo digiero y enfoco ‘a mi manera’.
 Porque crear GIFs animados es muy fácil, con imagemagick. Esta herramienta (imagemagick), ya he dicho repetidamente, en este foro, es muy útil, y potente, y hay que tener instalada (me parece que, últimamente, Debian ya la deja instalada por defecto).

Pues bien, para crear un GIF animado de una secuencia de imágenes (dos, o más), solo hay que hacer esto:
a) tener dicha secuencia en una carpeta, con las imágenes convenientemente ordenadas
b) normalizar, si es caso, esas las imágenes para que tengan el mismo tamaño. Esto lo hace el comando mogrify (de imagemagick). Por ejemplo, con
mogrify -resize 640x480 *.png
que, lanzado desde la ruta donde están esas imágenes, nos las pondrá todas, en este caso, a 640x480 px.
Por supuesto, las imágenes pueden ser JPG, PNG, etc. La ventaja de las PNG es que permiten tener un fondo transparente
c) Montar la animación, con ' convert' (otro de los comandos de imagemagick)...
convert -delay 50 -loop 0 *.png migif.gif

donde...
convert coloca las imágenes en la animación por orden alfabético (o numérico), así que debemos nombrar adecuadamente los archivos para que los coloque como queremos.
delay especifica el tiempo que veremos cada fotograma, en milisegundos. Un valor de 50-60, para 2-3 fotos, puede estar bien.
loop indica las veces que se repetirá la animación. Si le asignamos el valor 0, la animación es un bucle que se repite sin cesar.

Y con estos comandos podemos crear nuestros gif animados. Por poner un ejemplo (en una chapucera ocurrencia)…


Pero hay algo más: también podemos crear nuestros GIFs extrayéndolos de un video, y haciendo que se repita una secuencia de dicho video.
Aquí, un ejemplo clásico:

Otros pueden ser aplausos, gestos, saltos… la ventaja es que te los puedes hacer siendo tu mismo el protagonista… si te apetece compartir tu imagen.

Crear un GIF animado a partir de un video es sencillísimo.
Basta seleccionar el instante (y duración) de la parte del video que queremos usar. Esto se puede hacer con alguna aplicación gráfica, pero es comodísimo con el comando FFMPEG. Creo que ya lo comenté en alguna entrada de este Blog. Puedes extraer directamente el GIF con la orden...
ffmpeg -t <duración> -ss <instante de inicio captura> -i <nombre_archivo_vídeo> salida.gif 
donde la duración ha de ponerse en segundos y el 'instante de inicio captura' en formato hh:mm:ss
Por ejemplo, si queremos crear un GIF de una secuencia de 3 segundos que empieza en el instante 00:02:35 del video ‘video.mp4’ escribiremos, en una consola abierta en la ruta donde guardamos el video...
ffmpeg -t 3 -ss 00:02:35 -i video.mp4 salida.gif
y ya lo tenemos.


Pero podemos hacerlo, también, extrayendo las imágenes del video, y luego montar con ellas el GIF
Esto tiene, a mi modo de ver, dos ventajas: Una, que nos permite seleccionar con absoluta exactitud la imagen (el ‘frame’) inicial, y el frame final, de la secuencia y dos, que de esta forma podríamos jugar con la velocidad de esa secuencia, y que en el GIF aparezca a cámara lenta, o a cámara rápida, etc
Y se haría as...
Primero: extraer los frames
Abierto, como siempre, una terminal en la ruta donde se guarda el video (por ejemplo ‘baile.mp4’), y seleccionado que queremos 3 segundos, desde el instante 00:02:35, vamos a guardar las imágenes de salida en la subcarpeta /fotogramas. Así que la orden será esta:
ffmpeg -t 3 -ss 00:02:35 -i baile.mp4 /fotogramas/salida%d.jpg
donde el mandato ‘/fotogramas/salida%d.jpg’ indica que los frames se guarden como JPG, con el nombre de ‘salida’, y numerados correlativamente (‘%d’) en la subcarpeta ‘fotogramas’.
Y luego, crear el GIF

Para eso, como antes, no tenemos más que ir a esa carpeta /fotogramas, seleccionar las imágenes que queramos y, abierto ahí una terminal, escribir…
convert -delay 1x25 -loop 0 salida*.jpg salida.gif
donde ‘delay 1x25’ son los ‘frames por segundo’ que queremos que tenga el GIF (para verlo a cámara lenta pondríamos, por ejemplo,’delay 1x50’) y, como siempre, - loop 0 indica que se repita contínuamente la secuencia. 


Así que lo dicho: crear GIFs animados es facilísimo. Otra cuestión muy diferente es tener la 'mano artistica' necesaria, claro.

No hay comentarios:

Publicar un comentario