Une image au format Graphics Interchange Format (GIF) est encodée avec la convention d'Intel i.e. Little Endian.
La résolution est de 72 Dot Per Inch (DPI).
Les palettes de couleurs possibles sont noir et blanc, 16 couleurs ou 256 couleurs.
Une image logique peut être animée sous forme d'un petit film. Ce qui signifie qu'il peut exister plusieurs images physiques.
Il peut exister une palette de couleurs globale à toutes les images physiques et une palette de couleurs locale propre à une image physique.
Voici les codifications des blocs :
Identifiant | Description |
En-tête | En-tête du fichier. |
Fenêtre logique | Fenêtre d'affichage de l'image. |
Descripteur d'image | Description d'une image physique. |
Image physique | Partie d'une image physique. |
Extension graphique | Description de l'extension graphique. |
Commentaire | Commentaire, copyright, etc. |
Texte | Texte des données du graphique. |
Application | Description de l'application. |
Terminateur | Terminaison du fichier. |
Propriété | Taille en octets | Description |
Signature | 3. | Signature du format. GIF. |
Version | 3. | Version du format. 87a ou 89a. |
Propriété | Taille en octets | Description |
LargeurPixels | 2. | Largeur de l'image non signée en pixels. |
HauteurPixels | 2. | Hauteur de l'image non signée en pixels. |
Options | 1. | Options d'affichage. |
CouleurFond | 1. | Index de la couleur d'affichage. |
RatioPixel | 1. | Ratio de largeur d'un pixel par rapport à sa hauteur - 0 pour des pixels carrés. |
Les valeurs possibles de la propriété Options sont :
Les couleurs sont enregistrées sur trois octets qui sont dans l'ordre Rouge, Vert, Bleu.
Voici les propriétés du bloc :
Propriété | Taille en octets | Description |
Séparateur d'image | 1. | 0x2C. |
PositionX | 2. | Abscisse de la position de l'image non signée en pixels dans la fenêtre logique. |
PositionY | 2. | Ordonnée de la position de l'image non signée en pixels dans la fenêtre logique. |
LargeurPixels | 2. | Largeur de l'image non signée en pixels. |
HauteurPixels | 2. | Hauteur de l'image non signée en pixels. |
Options | 1. | Options d'affichage. |
Les valeurs possibles de la propriété Options sont :
Les couleurs sont enregistrées sur trois octets qui sont dans l'ordre Rouge, Vert, Bleu.
L'en-tête d'un bloc d'image est un octet définissant la taille du contenu du bloc, hormis son en-tête. Ainsi, un bloc d'image contient au plus 255 octets.
Voici les propriétés du bloc :
Propriété | Taille en octets | Description |
Marqueur | 1. | 0x21. |
Marqueur2 | 1. | 0xF9. |
TailleSousBloc | 1. | 4. |
Options | 1. | Options d'affichage. |
Delai | 2. | Délai non signé d'enchaînement des images. |
CouleurTransparente | 1. | Index de la couleur transparente. |
Terminateur | 1. | 0x00. |
Les valeurs possibles de la propriété Options sont :
Voici les propriétés du bloc :
Propriété | Taille en octets | Description |
Marqueur | 1. | 0x21. |
Marqueur2 | 1. | 0xFE. |
Commentaire | Variable. | Chaîne de caractères Ascii. |
Terminateur | 1. | 0x00. |
Le commentaire est découpé en une successions de blocs de commentaire unitaire.
L'en-tête d'un bloc de commentaire unitaire est un octet définissant la taille du contenu du bloc, hormis son en-tête. Ainsi, un bloc de commentaire unitaire contient au plus 255 octets.
Voici les propriétés du bloc :
Propriété | Taille en octets | Description |
Marqueur | 1. | 0x21. |
Marqueur2 | 1. | 0x01. |
Taille | 1. | 12. |
PositionX | 2. | Abscisse de la position du texte non signée en pixels dans la fenêtre logique. |
PositionY | 2. | Ordonnée de la position du texte non signée en pixels dans la fenêtre logique. |
LargeurPixels | 2. | Largeur du texte en pixels. |
HauteurPixels | 2. | Hauteur du texte non signée en pixels. |
LargeurCaracterePixels | 1. | Largeur d'un caractère en pixels. |
HauteurCaracterePixels | 1. | Hauteur d'un caractère non signée en pixels. |
IndexCouleurAvantPlan | 1. | Index de la couleur d'avant plan. |
IndexCouleurArrierePlan | 1. | Index de la couleur d'arrière plan. |
Texte | Variable. | Chaîne de caractères Ascii. |
Terminateur | 1. | 0x00. |
Le texte est découpé en une successions de blocs de texte unitaire.
L'en-tête d'un bloc de texte unitaire est un octet définissant la taille du contenu du bloc, hormis son en-tête. Ainsi, un bloc de texte unitaire contient au plus 255 octets.
Voici les propriétés du bloc :
Propriété | Taille en octets | Description |
Marqueur | 1. | 0x21. |
Marqueur2 | 1. | 0xFF. |
Taille | 1. | 11. |
Identifiant | 8. | Identifiant de l'application en Ascii. |
Code | 3. | Code d'unicité. |
Données | Variable. | Données de l'application. |
Terminateur | 1. | 0x00. |
Les données sont découpées en une successions de blocs de données unitaires.
L'en-tête d'un bloc de données unitaires est un octet définissant la taille du contenu du bloc, hormis son en-tête. Ainsi, un bloc de données unitaires contient au plus 255 octets.
Propriété | Taille en octets | Description |
Marqueur | 1. | 0x3B. |
FluxGif :
L'image est compressée avec l'algorithme Lempel, Ziv and Welch (LZW) avec une taille de codage variable. Le premier octet des données d'image définit la taille du codage TailleCodage.
La table des chaînes contient donc au plus 2^TailleCodage. Le marqueur de réinitialisation de la table est TailleCodage+1. Le marqueur de fin des données de l'image est TailleCodage+2.
1 1 1 1 1 1 1 1
4 4 4 4 4 4 4 4
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
2 2 2 2 2 2 2 2
4 4 4 4 4 4 4 4
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4