Format GIF
Graphics Interchange Format
Une structure en blocs
GIF fait partie de ces formats qui ont dépassé leur espérance de vie de plusieurs décennies. Créé par CompuServe en 1987, il est encore partout aujourd’hui, essentiellement grâce à sa gestion de l’animation.
Sa structure en blocs est d’une simplicité rafraîchissante comparée à celle des formats modernes : un en-tête, quelques descripteurs, une table de couleurs, vos données d’image, et un octet final pour dire « c’est terminé ».
Structure d’un fichier GIF
En-tête GIF
| Offset | Hex | ASCII | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0000 | 4749463839618002E001F70000 | GIF89a....... | ||||||||||||
Différences entre versions
Spécification d’origine. Aucun bloc d’extension.
Ajoute les extensions, l’animation et la transparence.
Blocs d’extension
GIF89a (la révision de 1989) a introduit les blocs d’extension, qui ont donné l’animation au GIF. Tous les blocs d’extension commencent par 0x21, suivi d’un octet de type : ils sont donc faciles à repérer quand on parcourt un fichier. Certains sont à conserver (la cadence de l’animation), d’autres à supprimer (les commentaires).
Extension de contrôle graphique (0xF9)
Contrôle la cadence de l’animation, la transparence et la méthode d’effacement. Précède chaque descripteur d’image dans les GIF animés. Toujours conservée.
Extension de commentaire (0xFE)
Commentaires en texte brut. Peuvent contenir n’importe quelle information : auteur, date de création, logiciel ou notes personnelles. Supprimée par PicScrub.
Extension d’application (0xFF)
Données propres à une application. La plus importante : NETSCAPE2.0, pour la boucle d’animation. Peut aussi contenir des métadonnées XMP.
Extension de texte brut (0x01)
Rarement utilisée. Affiche du texte à l’aide de la table de couleurs du GIF. Ignorée par la plupart des logiciels modernes.
Extensions d’application
NETSCAPE2.0 : boucle d’animation
Détermine le nombre de répétitions d’un GIF animé. La valeur 0 signifie une boucle infinie.
| Offset | Hex | ASCII | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0000 | 21FF0B4E45545343415045322E300301000000 | !..NETSCAPE2.0..... | ||||||||||||||||||
PicScrub conserve NETSCAPE2.0 pour préserver le comportement de l’animation.
XMP Data : Extensible Metadata Platform
Identifiant d’application : XMP DataXMP. Contient des métadonnées XMP/RDF complètes, au format XML.
PicScrub supprime les extensions d’application XMP.
Préservation de l’animation
La difficulté, avec le GIF, est de distinguer les données d’animation (à conserver) des métadonnées (à supprimer). Les deux résident dans des blocs d’extension : impossible donc de supprimer toutes les extensions d’un bloc.
Conservé pour l’animation
- • Nombre de boucles NETSCAPE2.0
- • Extensions de contrôle graphique
- • Délais entre les images
- • Méthodes d’effacement
- • Indices de transparence
- • Tables de couleurs locales
Supprimé
- • Extensions de commentaire
- • Blocs d’application XMP
- • Blocs d’application inconnus
- • Extensions de texte brut
Comment PicScrub traite le GIF
Valider l’en-tête
Contrôler la signature GIF87a ou GIF89a
Copier les données d’en-tête
Conserver le LSD et la table de couleurs globale tels quels
Filtrer les extensions
Garder NETSCAPE2.0 et le contrôle graphique, supprimer les commentaires et le XMP
Préserver les données d’image
Copier tels quels tous les descripteurs d’image, les LCT et les données LZW
Écrire le terminateur
Terminer le fichier par l’octet 0x3B
La compression LZW
Un mot sur les données d’image du GIF : elles utilisent la compression LZW, qui est restée brevetée jusqu’en 2004 (ce qui a fait couler beaucoup d’encre dans les années 1990). PicScrub ne touche pas du tout aux données compressées : nous les copions octet par octet, d’où une absence totale de perte de qualité.
Pourquoi c’est important
En préservant les données LZW d’origine, PicScrub garantit :
- • Aucune perte de qualité (image préservée au bit près)
- • Un traitement rapide (aucun cycle de décodage/réencodage)
- • Une taille identique pour les données d’image
Les limites des métadonnées GIF
La bonne nouvelle, avec le GIF, c’est qu’il est antérieur au standard EXIF : aucune coordonnée GPS ni information d’appareil à redouter. Les métadonnées y sont bien plus anodines.
Ce qui peut fuiter
Les risques du GIF pour la vie privée restent mineurs comparés à ceux du JPEG :
- • Les extensions de commentaire (contenant parfois des notes de l’auteur)
- • Les métadonnées XMP (rares, mais possibles)
- • L’identification du logiciel dans les blocs d’application