Format GIF — palette de 256 couleurs et images animées
Le GIF de CompuServe (1987) : 87a et 89a, palette de 256 couleurs, LZW sans perte, transparence d'une couleur, animation, et quand passer au WebP.
Le GIF (Graphics Interchange Format) est un format publié en 1987 par le service en ligne américain CompuServe ; sa révision de 1989, GIF89a, a ajouté les blocs d'extension servant à la couleur transparente et à l'animation. Utilisé depuis les débuts d'Internet et toujours synonyme d'« image animée », c'est techniquement l'un des formats les plus anciens.
Palette de 256 couleurs et compression LZW
Le GIF ne stocke pas directement la couleur de chaque pixel, mais le numéro de sa couleur dans une palette de 256 couleurs au maximum (table de couleurs). Selon la spécification, la table a une taille égale à une puissance de 2, jusqu'à 256 entrées. Ce tableau de numéros est compressé sans perte par l'algorithme LZW.
La compression elle-même est sans perte, mais réduire une photo de plus de 16 millions de couleurs à 256 couleurs entraîne une perte importante. Les dégradés doux, comme un ciel ou la peau, apparaissent tramés (dithering) ou en bandes. À l'inverse, le pixel art et les formes simples, peu colorés, sont enregistrés de façon légère et nette.
L'algorithme LZW a fait l'objet d'un brevet, ce qui a été l'une des raisons du développement du PNG dans les années 1990. Ce brevet a depuis expiré.
Transparence
L'extension de contrôle graphique (Graphic Control Extension) du GIF89a contient un champ désignant un numéro de couleur transparente. Les pixels de ce numéro ne sont pas dessinés et laissent voir l'arrière-plan. La transparence est donc « totale ou nulle » : impossible de représenter une ombre semi-transparente ou des bords adoucis. C'est pourquoi un GIF transparent posé sur un fond d'une autre couleur présente souvent un liseré blanc (halo) sur ses bords.
Animation
Une animation GIF affiche plusieurs images les unes après les autres ; selon la spécification, le délai entre deux images s'exprime en centièmes de seconde. Le nombre de répétitions est défini par un bloc d'extension devenu courant par la suite (NETSCAPE2.0).
Structure du fichier
Un fichier GIF commence par une signature de 6 octets, GIF87a ou GIF89a, suivie des blocs suivants.
- Descripteur d'écran logique : largeur et hauteur de l'ensemble du canevas, numéro de la couleur de fond
- Table de couleurs globale : palette utilisée dans tout le fichier (facultative)
- Extension de contrôle graphique : délai de l'image suivante, numéro de couleur transparente, méthode de traitement de l'image (89a)
- Descripteur d'image et données d'image : position et taille de l'image, table de couleurs locale si nécessaire, données compressées en LZW
- Les étapes 3 et 4 se répètent autant de fois qu'il y a d'images, puis vient l'octet de fin (3B).
Chaque image peut avoir sa propre table de couleurs locale : en théorie, l'ensemble peut donc utiliser plus de 256 couleurs, mais la limite de 256 couleurs s'applique toujours au sein d'une même image.
Avantages et limites
- Compatibilité : tous les navigateurs et messageries, et presque tous les logiciels, le lisent, animation comprise.
- Poids peu efficace : chaque image étant compressée séparément en 256 couleurs, une séquence de type photo donne un fichier très lourd. Google explique que le WebP animé peut offrir des fichiers plus légers que le GIF ou l'APNG.
- Contraintes de couleur et de transparence : 256 couleurs et transparence sur 1 bit seulement.
Usages principaux et formats de remplacement
Il reste utilisé lorsque la lecture partout est la priorité absolue : courtes images de réaction, icônes de chargement, pixel art. Pour une image animée destinée à un site web, le WebP ou l'AVIF animé, ou une courte vidéo (MP4, WebM), sont bien plus légers et plus nets.
Précautions de conversion
- GIF → JPG / PNG : la plupart des outils n'enregistrent que la première image, en image fixe.
- PNG / JPG → GIF : l'image est réduite à 256 couleurs et la qualité d'une photo chute nettement. À éviter, sauf pour des logos ou des formes simples.
- Pour convertir une image fixe dans différents formats, consultez le convertisseur de format d'image.
Essayer maintenant