\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 épileptisante, une extension de ce format fut crée, et reçu le petit nom 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. % ================================================================== \section{Création} Avec la commande \texttt{convert} d'ImageMagick, on peut, à partir d'une suite 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} Le \textsl{delay} est exprimé en millisecondes. On peut aussi rajouter l'option \texttt{-loop nnn}\footnote{aka: add Netscape loop extension to your GIF animation} avec nnn qui est le nombre de boucle que doit faire l'animation. La valeur 0 demandant une boucle infinie. Deux fois\index{Vous connaissez Chuck Norris ?}. Et ensuite, vouv pouvez voir votre logo en flamme avec la commande \texttt{animate foo.gif} sur votre super écran (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. % ================================================================== \section{Manipulation} XXX\index{XXX} % ================================================================== \section{Exemples pratiques} Dans un Makefile~: \begin{verbatim} indoor.gif: $(DEPS) convert \ `ls -rt1 frames/indoor/????.png | tail -99` \ -delay 120 \ -resize 28% \ -normalize \ -colorspace gray \ -colors 31 \ -dither none \ $@ \end{verbatim} % ================================================================== \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. % ==================================================================