Ce module implémente l'algorithme de codage de Huffman pour la compression et la décompression de données. Il permet de réduire la taille des données en attribuant des codes binaires de longueur variable aux symboles, les symboles les plus fréquents recevant des codes plus courts.
Le module huffman-data-compressor
permet d'implémenter l'algorithme de Huffman pour la compression et la décompression de données. Cette technique est particulièrement utile pour réduire la taille des données dans des environnements avec une bande passante limitée ou pour optimiser le stockage.
Pour installer le module, utilisez npm :
npm install huffman-data-compressor
L'exemple suivant montre comment compresser et décompresser une chaîne de caractères :
const { Huffman } = require('huffman-data-compressor');
// Chaîne à compresser
const data = 'exemple de chaîne à compresser';
// Création d'une instance de Huffman
const huffman = new Huffman();
// Calcul des fréquences des symboles
const freq = huffman.getFrequency(data);
// Construction de l'arbre de Huffman
const root = huffman.createHuffmanTree(freq);
// Génération de la bibliothèque de codes
const codes = new Map();
huffman.createLibrary(root, '', codes);
// Compression de la chaîne
const encodedData = huffman.encode(data, codes);
console.log('Données compressées :', encodedData);
// Décompression de la chaîne
const decodedData = huffman.decode(encodedData, codes);
console.log('Données décompressées :', decodedData);
Le module offre également des fonctionnalités pour compresser et décompresser des fichiers. L'exemple ci-dessous montre comment décompresser un fichier :
const { fileConversion } = require('huffman-data-compressor');
// Création d'une instance de fileConversion
const file = new fileConversion();
// Décompression d'un fichier compressé
// 'chemin/vers/fichier_compressé.huf' : chemin du fichier compressé
// 'chemin/vers/dossier_de_sortie' : dossier où sera placé le fichier décompressé
file.decompressFile('chemin/vers/fichier_compressé.huf', 'chemin/vers/dossier_de_sortie');
Pour compresser un fichier, utilisez la méthode compressFile
:
// Compression d'un fichier
file.compressFile('chemin/vers/fichier_à_compresser');
-
getFrequency(data: string): Map<string, number>
Calcule la fréquence d'apparition de chaque symbole dans la chaînedata
et retourne une Map associant chaque symbole à sa fréquence. -
createHuffmanTree(freq: Map<string, number>): Node
Construit l'arbre de Huffman à partir des fréquences et retourne la racine de l'arbre. -
createLibrary(root: Node, code: string, codes: Map<string, string>): void
Parcourt l'arbre de Huffman pour générer une bibliothèque (Map) associant à chaque symbole son code binaire. -
encode(data: string, codes: Map<string, string>): string
Encode la chaînedata
en utilisant la Map des codes générée. Retourne la chaîne encodée. -
decode(encodedData: string, codes: Map<string, string>): string
Décode la chaîne encodéeencodedData
en utilisant la Map des codes et retourne la chaîne originale.
-
compressFile(inputPath: string): void
Compresse le fichier situé àinputPath
. -
decompressFile(inputPath: string, outputDir: string): void
Décompresse le fichier situé àinputPath
et sauvegarde le fichier décompressé dans le répertoireoutputDir
.
- Assurez-vous que les données à compresser ou décompresser sont valides (chaînes de caractères pour la compression de texte, fichiers existants pour la compression/décompression de fichiers).
- La méthode
decompressFile
crée le fichier décompressé dans le répertoire de sortie spécifié. - Le module est conçu pour être utilisé dans un environnement Node.js.