2020-11-10 12:40:30 +11:00
|
|
|
\chapter{gif89a}\index{gif89a}
|
|
|
|
\label{chap:gif89a}
|
|
|
|
|
|
|
|
Ah, enfin nous arrivons à un sujet \textbf{vraiment} important :
|
|
|
|
la confection d'images qui clignotent. Ça va aussi être l'occasion
|
|
|
|
de plonger un peu dans l'histoire du siècle dernier. Nous allons
|
|
|
|
parler de Compuserve\index{Compuserve} que seul les plus anciens
|
|
|
|
d'entre vous on pu connaitre.
|
|
|
|
|
|
|
|
\begin{quote}
|
|
|
|
\textsl{Wikipedia} :
|
|
|
|
CompuServe (ou CompuServe Information Services, ou CIS), est le
|
|
|
|
premier des grands fournisseurs de services en ligne aux États-Unis.
|
|
|
|
Il domine le marché pendant les années 1980 puis reste un acteur
|
|
|
|
important au milieu des années 1990.
|
|
|
|
\end{quote}
|
|
|
|
|
|
|
|
Voilà pour expliquer brièvement d'où sort ce fameux format \textsc{gif}.
|
|
|
|
À l'époque, les moyens de connexion étaient beauuucoup plus lents que
|
|
|
|
ce que nous connaissons en 2020\footnote{Une fscking mauvaise année},
|
|
|
|
mais les écrans graphiques commençaient à bien se répandre, et certains
|
|
|
|
pouvaient même afficher {\em 256 couleurs}~:
|
|
|
|
|
|
|
|
\begin{quote}
|
|
|
|
L'entreprise est aussi connue pour avoir mis au point un format d'image
|
|
|
|
numérique très répandu, le GIF\index{GIF}, en 1987.
|
|
|
|
\end{quote}
|
|
|
|
|
|
|
|
Deux ans plus tard, le public demandant de plus en plus d'images
|
2020-11-17 05:45:21 +11:00
|
|
|
épileptisante, une extension de ce format fut crée,
|
|
|
|
et reçu le petit nom
|
2020-11-10 12:40:30 +11:00
|
|
|
de \textsc{gif89a}. Il y a toujours la limitation à 256 couleurs
|
|
|
|
et un seul niveau de transparence. Contraintes qui n'étaient pas si
|
|
|
|
génantes que ça à l'époque vu les terminaux visés.
|
2023-11-30 00:12:03 +11:00
|
|
|
Contraintes qu'un artiste numérique peut comprendre et accepter.
|
2020-11-10 12:40:30 +11:00
|
|
|
|
|
|
|
% ==================================================================
|
|
|
|
|
|
|
|
\section{Création}
|
|
|
|
|
2020-11-17 05:45:21 +11:00
|
|
|
Avec la commande \texttt{convert} d'ImageMagick,
|
|
|
|
on peut, à partir d'une suite
|
2020-11-10 12:40:30 +11:00
|
|
|
d'image, créer une gif89a qui tourne en boucle~:
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
convert -delay 20 -loop 0 a.png b.png c.png foo.gif
|
|
|
|
\end{verbatim}
|
|
|
|
|
2020-11-17 05:45:21 +11:00
|
|
|
Le \textsl{delay} est exprimé en millisecondes. On peut aussi
|
2023-01-30 08:16:13 +11:00
|
|
|
rajouter l'option \texttt{-loop nnn}\footnote{aka: add Netscape loop
|
2020-11-17 05:45:21 +11:00
|
|
|
extension to your GIF animation} avec nnn qui est le nombre de
|
|
|
|
boucle que doit faire l'animation. La valeur 0 demandant une
|
2023-11-30 00:12:03 +11:00
|
|
|
boucle infinie. Deux fois\footnote{Vous connaissez Chuck Norris ?}.
|
2020-11-10 12:40:30 +11:00
|
|
|
|
|
|
|
Et ensuite, vouv pouvez voir votre logo en flamme avec la
|
2020-11-17 05:45:21 +11:00
|
|
|
commande \texttt{animate foo.gif} sur votre super écran
|
2023-01-30 08:16:13 +11:00
|
|
|
(s)vga\index{VGA} 14 pouces.
|
|
|
|
|
|
|
|
Je pense\footnote{Avis personnel d'après ma louche.} que la compression
|
|
|
|
de cette commande n'est pas optimale, peut-être parce qu'elle
|
|
|
|
n'utilise pas les \textsl{subblocs} que permet ce format.
|
2020-11-10 12:40:30 +11:00
|
|
|
|
|
|
|
% ==================================================================
|
|
|
|
|
|
|
|
\section{Manipulation}
|
|
|
|
|
2023-01-30 08:16:13 +11:00
|
|
|
XXX\index{XXX}
|
|
|
|
|
2020-11-10 12:40:30 +11:00
|
|
|
% ==================================================================
|
|
|
|
|
|
|
|
\section{Exemples pratiques}
|
|
|
|
|
2023-10-09 06:56:41 +11:00
|
|
|
Dans un Makefile\footnote{Les makefiles, c'est le bien !}~:
|
2023-01-30 08:16:13 +11:00
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
indoor.gif: $(DEPS)
|
2023-10-09 06:56:41 +11:00
|
|
|
convert \
|
|
|
|
`ls -rt1 frames/indoor/????.png | tail -99` \
|
|
|
|
-delay 120 \
|
|
|
|
-resize 28% \
|
|
|
|
-normalize \
|
|
|
|
-colorspace gray \
|
|
|
|
-colors 31 \
|
|
|
|
-dither none \
|
|
|
|
$@
|
2023-01-30 08:16:13 +11:00
|
|
|
\end{verbatim}
|
|
|
|
|
|
|
|
|
2023-10-09 06:56:41 +11:00
|
|
|
|
2020-11-10 12:40:30 +11:00
|
|
|
% ==================================================================
|
2023-03-04 06:21:15 +11:00
|
|
|
|
|
|
|
\section{gifsicle}
|
|
|
|
|
|
|
|
'Gifsicle' manipulates GIF images. Its most common uses include combining
|
|
|
|
single images into animations, adding transparency, optimizing animations for
|
|
|
|
space, and printing information about GIFs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
% ==================================================================
|
|
|
|
|
|
|
|
|