Capitole du Libre

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 freenode#mixart-myrys 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...