Outil pour appliquer la compression LZW. Lempel-Ziv-Welch (LZW) est un algorithme de compression de données sans pertes créé par Abraham Lempel, Jacob Ziv, et Terry Welch.
Compression LZW - dCode
Catégorie(s) : Compression
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Ecrire à dCode !
Outil pour appliquer la compression LZW. Lempel-Ziv-Welch (LZW) est un algorithme de compression de données sans pertes créé par Abraham Lempel, Jacob Ziv, et Terry Welch.
L'algorithme d'encodage LZW utilise un dictionnaire prédéfini (comme les 128 valeurs ASCII) et encode les caractères par un numéro correspondant à leur entrée dans le dictionnaire.
Exemple : Le message clair DECODED qui peut s'écrire 3,4,2,14,3,4,3 (ensemble de 7 éléments) avec le dictionnaire 0:A,1:B,2:C,...,25:Z.
A chaque étape, regarder si la sous-chaine est dans le dictionnaire, si elle n'y est pas, faire évoluer le dictionnaire qui enregistre alors une nouvelle entrée constituée des deux dernières entrées trouvées.
Exemple : Etape 1, recherche de DE, qui n'existe pas dans le dictionnaire. Enregistrer DE (position 26) et sauvegarder en sortie la position de D (position 3).
Etape 2, recherche de EC, qui n'existe pas dans le dictionnaire. Enregistrer EC (position 27) et sauvegarder en sortie la position de E (position 4). Ainsi de suite pour les étapes 3 et 4.
Etape 5, recherche à nouveau de DE, cette fois DE existe dans le dictionnaire, passer à l'étape 6.
Etape 6, recherche de DED, qui n'existe pas dans le dictionnaire. Enregistrer DED (position 30) et sauvegarder en sortie la position de DE (position 26).
Le dictionnaire est devenu 0:A,1:B,...,25:Z,26:DE,27:EC,28:CO,29:OD,DED:30
Le message chiffré est composé des nombres sauvegardés en sortie.
Exemple : Le message chiffré est 3,4,2,14,26,3 (constitué de 6 éléments, le message a bien été compressé)
La décompression/déchiffrement nécessite de connaitre le dictionnaire et la suite de valeurs issue de la compression.
Exemple : Soient le message chiffré 3,4,2,14,26,3 et le dictionnaire 0:A,1:B,2:C,...,25:Z
Pour chaque valeur, regarder les caractères correspondant à la position dans le dictionnaire.
A chaque étape, faire évoluer le dictionnaire comme lors du codage.
Exemple : Etape 1 : 3 correspond à D
Etape 2 : 4 correspond à E, rajouter DE dans le dictionnaire en position 26,
Etape 3 : 2 correspond à C, rajouter EC dans le dictionnaire en position 27, de même pour l'étape 4
Etape 5 : 26 correspond à DE, etc.
Le message clair décompressé est DECODED.
Le message (généralement binaire) est plutôt court (car compressé). Les premières valeurs du message correspondent généralement à des valeurs basiques du dictionnaire (car non compressés) généralement de l'ASCII.
LZW est utilisé dans plusieurs formats de fichiers comme le GIF ou le TIFF.
Il existe de nombreuses variantes du LZW améliorant la compression comme le LZ77 et LZ78, le LZMA, le LZSS, ou l'algorithme Deflate. Et il est souvent intéressant de combiner cette compression à la transformée de Burrows-Wheeler ou du codage Huffman.
En 1978 par Abraham Lempel, Jacob Ziv, et Terry Welch
dCode se réserve la propriété du code source de l'outil 'Compression LZW' en ligne. Sauf code licence open source explicite (indiqué CC / Creative Commons / gratuit), tout algorithme, applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toute fonction (convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codé en langage informatique (PHP, Java, C#, Python, Javascript, Matlab, etc.) aucune donnée, script ou accès API ne sera cédé gratuitement, idem pour télécharger Compression LZW pour un usage hors ligne, PC, tablette, appli iPhone ou Android !
Rendez-vous sur notre communauté Discord pour participer au forum d'entraide !