Quelques tentatives de GIFs animées, réalisées le dimanche lors des divers ateliers de Capitole du Libre, organisé par l'association Toulibre, dans les locaux de l'N7. Tout n'a pas fonctionné comme prévu pour cause d'improvisation matinale et de manque de prises 220v accessibles, mais voici quand même le peu qui en est sorti à peu près présentable...
#!/bin/bash if [ $# == 1 ] then JOB=$1 else JOB=cdl fi # -------------------------------------------------------- NOMBRE=60 ATTENTE=4 # entre chaque prise de vue DELAY=10 # en ms, pour la gif DEVICE=/dev/video1 GRABOPT="-S -o png -i sif -d $DEVICE" TCADRE=10 # -------------------------------------------------------- for frame in $(seq 1 $NOMBRE) do shoot=/tmp/s_${JOB}_$(printf "%03d" $frame).png echo $shoot vgrabbj $GRABOPT > $shoot sleep $ATTENTE done for frame in $(seq 1 $NOMBRE) do shoot=/tmp/s_${JOB}_$(printf "%03d" $frame).png ecran=/tmp/c_${JOB}_$(printf "%03d" $frame).tga pngtopnm $shoot | ppmtotga -rgb -norle > $ecran echo ====== $frame ===== ecran $ecran img=/tmp/i_${JOB}_$(printf "%03d" $frame).tga tga_resize $ecran percent $img 80 1 tga_extract $img $img 0 64 512 256 tga_effects $img mirror $img tga_effects $img updown $img imga=/tmp/i_${JOB}_$(printf "%03d" $frame)_a.tga tga_filtres $img sobel $imga 3 tga_cadre $imga sweep $imga 0 0 100 $TCADRE imga=/tmp/i_${JOB}_$(printf "%03d" $frame)_b.tga tga_effects $img class0 $imga tga_cadre $imga sweep $imga 0 0 100 $TCADRE imga=/tmp/i_${JOB}_$(printf "%03d" $frame)_a.tga imgb=/tmp/i_${JOB}_$(printf "%03d" $frame)_b.tga imgc=/tmp/i_${JOB}_$(printf "%03d" $frame)_c.tga tga_combine $imga $imgb vdeg $imgc 1 tga_cadre $imgc sweep $imgc 0 0 100 $TCADRE imga=/tmp/i_${JOB}_$(printf "%03d" $frame)_d.tga tga_dither $img bayer0 $imga tga_cadre $imga sweep $imga 0 0 100 $TCADRE imga=/tmp/i_${JOB}_$(printf "%03d" $frame)_e.tga tga_dither $img error $imga tga_cadre $imga sweep $imga 0 0 50 $TCADRE done convert -delay $DELAY /tmp/i_${JOB}_*_a.tga cdl_${JOB}_a.gif convert -delay $DELAY /tmp/i_${JOB}_*_b.tga cdl_${JOB}_b.gif convert -delay $DELAY /tmp/i_${JOB}_*_c.tga cdl_${JOB}_c.gif convert -delay $DELAY /tmp/i_${JOB}_*_d.tga cdl_${JOB}_d.gif convert -delay $DELAY /tmp/i_${JOB}_*_e.tga cdl_${JOB}_e.gif
Les outils logiciels utilisés sont quasiment tous du fait-maison de vieux dino, et basés sur un code C qui remonte au siècle dernier. Dans l'ensemble, ça fonctionne plutôt bien pour moi, mais YMMV.
Pour ceux d'entre vous qui souhaiteraient en savoir un peu plus sur la confection de GIFs animées par des méthodes programmatiques, il est possible d'improviser un atelier le mercredi soir lors des réunions du Tetalab dans le superbe hangar de Mixart-Myrys. Pour prendre rendez-vous, essayez de voir avec <tth> dans IRC Libera.chat, canal #tetalab ou débarquez un mercredi vers 21h au container des hackers.
Et pour finir, deux épicfails causés par un manque de préparation : quand la caméra est à l'envers, il faut aussi penser à demander au logiciel de retourner l'image.
![]() |
![]() |
tTh, animagifeur depuis des années...