PicScrub logoPicScrub
Retour aux formats

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

Header
LSD
GCT
Extensions
Image Data
Trailer
Header
6 octets
GIF87a ou GIF89a
LSD
7 octets
Descripteur d’écran logique
GCT
768 octets
Table de couleurs globale (optionnelle)
Extensions
100 octets
Blocs d’extension (métadonnées)
Image Data
Longueur variable
Descripteur d’image + données LZW
Trailer
1 octets
Terminateur 0x3B

En-tête GIF

Signature GIF
Version (89a)
Largeur (640)
Hauteur (480)
Champs compactés
Index de la couleur de fond
Rapport d’aspect des pixels
OffsetHexASCII
0000
4749463839618002E001F70000
GIF89a.......

Différences entre versions

GIF87a

Spécification d’origine. Aucun bloc d’extension.

GIF89a

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.

21 F9 04 [disposal] [delay] [transparent] 00

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.

21 FE [size] [comment data...] 00

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.

21 FF 0B [app identifier] [auth code] [data...] 00

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.

Introduction d’extension
Taille du bloc (11)
NETSCAPE2.0
Taille du sous-bloc
ID du sous-bloc
Nombre de boucles
Terminateur
OffsetHexASCII
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

1

Valider l’en-tête

Contrôler la signature GIF87a ou GIF89a

2

Copier les données d’en-tête

Conserver le LSD et la table de couleurs globale tels quels

3

Filtrer les extensions

Garder NETSCAPE2.0 et le contrôle graphique, supprimer les commentaires et le XMP

4

Préserver les données d’image

Copier tels quels tous les descripteurs d’image, les LCT et les données LZW

5

É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