
#!/bin/bash
SOURCE=smoking.png
DELAY=10 # between frames of the GIF animation
INCREM=3 # step for the main computing loop
TMPIMG=/tmp/tmp.pnm
WORKIMG=/tmp/work.pnm
# ---------------------------------------------------------
largeur=$(identify -format '%w' $SOURCE)
hauteur=$(identify -format '%h' $SOURCE)
for i in $(seq 4 $INCREM 100)
do
dest=/tmp/montage_a_$(printf "%03d" $i).pnm
convert -resize $i% $SOURCE $TMPIMG
larg=$(identify -format '%w' $TMPIMG)
haut=$(identify -format '%h' $TMPIMG)
Y=$(( ($largeur-$larg)/2 ))
X=$(( ($hauteur-$haut)/2 ))
figlet -W at $Y , $X
pngtopnm $SOURCE | pnminvert > $WORKIMG
pnmpaste < $WORKIMG -replace $TMPIMG $Y $X > $dest
y1=$(($Y+9))
y2=$(($Y+7))
convert \
-fill black -pointsize 72 \
-annotate +${y1}+431 'Smoking' \
-fill white -pointsize 72 \
-annotate +${y2}+429 'Smoking' \
$dest $dest
done
Quelques explications ?
La ligne largeur=$(identify -format '%w' $SOURCE) permet de récupérer la largeur (width '%w') en pixels de l'image dont le nom de fichier est dans $SOURCE. De même pour la hauteur.
Ensuite nous allons faire une boucle avec un compteur qui démarre à 4 et va justqu'à 100 avec un pas de $INCREM.