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...