— dev, bash, linux — 1 min read
Hoy me surgió una necesidad, que me pareció bastante simple pero no encontré herramientas simples que me lo solucionaran. Les dejo este script, que graba un gif de la consola durante X segundos (idea de @shinax y @rootmyword). Ese valor se lo pasamos por parámetro (no lo valido ni tiene default, porque la vida es demasiado corta para controlarlo) . Hay que correr el script con un & al final de la línea, asi pasa a correr en background y podemos usar la consola.
1#!/bin/bash2clear3mkdir temp_gif45segs=`expr $1 \* 5`67for (( i = 1; i <= $segs ; i++ ));8do9 printf -v number "%06d" $i10 import -window $WINDOWID temp_gif/$number.gif11 sleep 0.212done1314convert -delay 20 -loop 0 temp_gif/*.gif animacion.gif1516rm -R temp_gif
El código terminó siendo más simple de lo que pensaba, toda la magia la hace ImageMagick. Explico por línea, porque la idea siempre es aprender como funciona:
Línea 5. Toma el primer parámetro que le demos, lo multiplica por 5 porque cada imagen la saco cada 0.2 segundos ;) Línea 9. El printf lo utilizo para formatear &i;, neceito hacer un zero-padding, o sea, rellenar con ceros a la izquierda, para que después el conversor me tome el orden correcto. El parámetro -v indica que no lo imprima, sino que lo almacene en una variable. Línea 10. ImageMagick se encarga de guardar la imágen de la ventana que le digo, para $WINDOWSID creo que es necesario xorg-xwininfo, ya lo tenía instalado. Línea 13. Toma todas las imágenes de la carpeta, las concatena con un delay de 0.2 segundos y hace un loop infinito.