FRDX File Redux

Deflate : Zlib, Zopfli & co.

Deflate est un algorithme de compression de données généraliste qui est apparu en 1993 au sein de PKZIP 2, il est depuis lors devenu un standard de fait pour les archives (.zip ou .jar) ainsi que les fichiers compressés individuellement avec gzip (.gz).
Au niveau des échanges sur le Web, HTTP 1.1 permet en théorie l’utilisation de différentes méthodes de compression grace au couple d’entêtes « Accept-Encoding / Content-Encoding ». En raison d’un problème d’interprétation de la définition de l’encodage « Deflate » seul « Gzip » est utilisable en pratique (le module mod_deflate pour Apache produit du Gzip bien que son nom laisse penser le contraire).


Pour bon nombre de personnes la compression de données n’est qu’une boîte noire dont le mécanisme interne reste relativement obscur. Pour pouvoir plus facilement visualiser le fonctionnement de Deflate et comparer différentes mises en œuvre de cet algorithme je me suis inspiré des images restituées par certaines cameras thermiques pour retranscrire l’efficacité de la compression Deflate. Une version rudimentaire d’un petit outil en ligne de commande nommé gzthermal (un cousin de pngthermal) est désormais disponible.

Avec la complicité d’Alsacréations une petite vidéo détaillant le fonctionnement de la compression Gzip est visible sur Dailymotion (retranscription sous forme de texte).


Extrait de texte avec efficacité de la compression Deflate
Les zones en bleu sont celles les mieux compressées.
Les zones en bleu sont celles les mieux compressées.
Les zones en rouge dénotent une expension, celles en orange une compression très faible.
Les zones en rouge dénotent une expension, celles en orange une compression très faible.