Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Deflate — Wikipédia
Deflate — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Deflate est un format de compression de données sans perte qui couple l'algorithme LZ77 et le codage de Huffman. Il fut défini à l'origine par Phil Katz pour la version 2 de son archiveur PKZIP, et fut plus tard défini dans la RFC 1951 en 1996, par Jean-Loup Gailly et Mark Adler.

Deflate n'est soumis à aucun brevet, ce qui a conduit à son utilisation dans les formats gzip et PNG, en plus du format zip auquel il était au départ destiné, à l'époque où le brevet sur l'algorithme LZW (utilisé dans le format GIF) n'avait pas encore expiré.

deflate désigne aussi une méthode d'encodage de contenus HTTP (en) (aux côtés de gzip ou br), le format de fichier utilisé est alors celui de zlib (RFC 1950)[1].

Détails

[modifier | modifier le code]

Structure par blocs

[modifier | modifier le code]

Deflate prescrit une structure par blocs de données dont les trois premiers bits donnent le type.

Le premier bit est 1 si le bloc est le dernier bloc du fichier, et 0 sinon.

Les deux bits suivants indiquent comment les données sont encodées, selon trois types possibles indiqués pas les marqueurs 00, 01 et 10. Le marqueur 11 n'est pas utilisé.

Les blocs compressés n'ont pas de limite de taille : un caractère de l'alphabet donne un signal de fin de bloc. Un fichier contenant un seul bloc compressé contenant tout le fichier source est donc possible.

Bloc non compressé

[modifier | modifier le code]

Ce bloc contient les données brutes qui seront recopiées directement dans le fichier décompressé.

Ce bloc est indiqué par le marqueur 00 et contient dans ses deux premiers octets un entier non signé sur 16 bits donnant la longueur LEN du bloc, et dans les deux suivants le complément à un de cet entier. Les LEN octets suivants forment le bloc[2].

La longueur de ce type de bloc est donc limitée à 64 Kio (limite d'un entier non signé sur 16 bits).

Blocs compressés

[modifier | modifier le code]

Les données sont considérées par octet et d'abord compressées avec l'algorithme LZ77 : les caractères désignent soit un octet brut soit une référence à des données déjà existantes précédemment dans le fichier. Cette référence est sous la forme d'un couple (longueur de la référence, distance à la référence) où la distance est inférieure à 32768 octets (soit 32 Kio) et la longueur dans l'intervalle d'entiers [3, 258]. Ces bornes permettent de définir deux alphabets sur lesquels l'encodage par arbres de Huffman a lieu.

Code de Huffman standard
[modifier | modifier le code]

Le marqueur 01 indique un bloc encodé par un arbre de Huffman standard défini dans la RFC 1951.

On considère deux alphabets : d'une part les entiers 0 à 285, et un autre alphabet contenant les entiers de 0 à 29. Les alphabets des octets bruts et des longueurs sont fusionnés dans le premier alphabet. Cela veut dire que pour un octet brut est attribué directement le code qui correspond à sa valeur en entier de 0 à 255, le code 256 correspond à la fin du bloc et les codes suivants correspondent à des longueurs, par exemple 257 pour une longueur de 3. Pour certains codes la longueur n'est pas unique, c'est pour cela qu'on utilise des bits supplémentaires pour la déterminer. Par exemple, pour coder la longueur 25 est utilisé 270 à qui on ajoute deux bits, ici 10 codant le chiffre 2 car 25 = 23 + 2 {\displaystyle 25=23+2} {\displaystyle 25=23+2}. De même pour la distance, on lui attribue un code qui correspond à la tranche à laquelle elle appartient, puis on utilise éventuellement des bits supplémentaires pour coder sa valeur. Le nombre de bits supplémentaires attendu est spécifié dans la section 3.2.5.

Une fois cette première étape passée, on modifie les codes précédemment obtenus en code de Huffman. Pour les codes correspondant aux octets bruts et aux longueurs, on leur attribue un code allant de 7 à 9 bits, puis on ajoute les éventuels bits supplémentaires. Par exemple, le code 270 sera représenté par 0001110 (7 bits) alors que le code 280 sera représenté par 11000000 (8 bits), cela permet de minimiser le nombre de bits utilisés pour les codes les plus fréquents. On remarquera que les codes 286 et 287 ont une attribution de code de Huffman, bien que ces codes ne figureront jamais dans les données compressées. Pour la distance, on utilise comme code de Huffman le code précédemment obtenu concaténé avec les éventuels bits supplémentaires. On peut alors juxtaposer le code de Huffman de la longueur, ses éventuels bits supplémentaires puis celui de la distance avec ses bits supplémentaires, on obtient alors le code compressé du couple (longueur de la référence, distance à la référence) .

Code de Huffman adapté
[modifier | modifier le code]

Le marqueur 10 indique un bloc encodé par un arbre de Huffman fourni dans le fichier, qui est lui même encodé suivant un format prescrit par Deflate. Ce type de bloc est désigné pour l'utilisation de codage Huffman adaptatif lors de la compression, ce qui permet d'avoir un encodage adapté à sa source.

Limitations

[modifier | modifier le code]

Deflate ne définit qu'un format de données compressées. Ce n'est en particulier pas un format de fichier : il est ainsi recommandé dans la section 6 de coupler les données Deflate avec un code correcteur d'erreurs pour former une archive, comme c'est le cas pour gzip.

Deflate64

[modifier | modifier le code]

Il s'agit d'une variante de Deflate qui utilise un dictionnaire plus grand (64 ko au lieu de 32 ko), des codes longueurs de 16 bits (pour des longueurs de 3 à 65536 octets), et des codes distances de 14 bits (30-31). Le taux de compression est légèrement amélioré en comparaison avec Deflate.

PKZIP prend en charge Deflate64 à partir de la version 2.50. Ce format a été créé par PKWARE et est inclus dans la spécification ZIP (méthode de compression 9), bien qu'il ne soit pas décrit en détail et soit considéré comme un format propriétaire par PKWARE (qui revendique Deflate64 comme marque de commerce).

Deflate64 est pris en charge par plusieurs produits (7-zip, Info-ZIP) mais pas par zlib, en raison de son aspect propriétaire et des faibles améliorations qu'il apporte.

Références

[modifier | modifier le code]
  1. ↑ « Content-Encoding - HTTP | MDN », sur MDN Web Docs, 7 juillet 2025 (consulté le 9 décembre 2025)
  2. ↑ (en) « RFC 1951 », Section 3.2.4 [archive] (consulté le 8 décembre 2025)

Liens externes

[modifier | modifier le code]

  • RFC 1951
  • zlib.org
v · m
Techniques de compression de données
Sans perte
Codage entropique
  • Unaire
  • Binaire tronqué
  • Gamma
  • Delta
  • Omega
  • Zeta
  • Fibonacci
  • Levenshtein
  • Even-Rodeh
  • Stout
  • Golomb
  • Rice
  • Exp-Golomb
  • Shannon-Fano
  • Huffman
  • Shannon-Fano-Elias (en)
  • Arithmétique
  • Par intervalle
Dictionnaire
  • LZ77 et LZ78
  • LZSS
  • Lempel-Ziv-Welch
  • Lempel-Ziv-Oberhumer
Modélisation de contextes
  • Modélisation de Markov dynamique (DMC)
  • Prédiction par reconnaissance partielle (PPM)
  • Pondération de contextes (CM)
  • Pondération de contextes arborescents (en) (CTW)
Techniques hybrides
  • Implode
  • Deflate
  • LZP
  • LZMA
  • ROLZ
Autres Codage par plages
Transformations
  • Codage différentiel (Delta)
  • Transformée en étoile
  • Move-to-front (MTF)
  • Transformée de Burrows-Wheeler (BWT)
  • Transformée par substitution de mots (WRT)
  • BCJ2
Formats de fichiers
  • 7z
  • ACE
  • ARC
  • ARJ
  • B1 (en)
  • bzip2
  • CAB
  • gzip
  • LHA / LZH
  • RAR
  • UHA
  • XZ
  • Z
  • Zip
Avec pertes
Codage par transformation Compression par ondelettes
Autres
  • Modulation par impulsions et codage différentiel adaptatif (ADPCM)
  • Compression fractale
Transformations
  • Transformée de Karhunen-Loève (KLT)
  • Transformée en cosinus discrète (DCT)
  • Transformation de Fourier discrète (DFT)
  • Transformée en ondelettes discrète (DWT)
  • icône décorative Portail de l’informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Deflate&oldid=231339779 ».
Catégorie :
  • Algorithme de compression sans perte
Catégories cachées :
  • Article contenant un appel à traduction en anglais
  • Page utilisant un modèle Bases inactif
  • Article utilisant le modèle Dictionnaires inactif
  • Page utilisant le modèle Autorité inactif
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés
  • Page utilisant des liens magiques RFC

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id