Huffman - compresseur de fichiers

Description

Ce code se base essenciellement sur un module de compression programmé par Fredrik Qvarfort (25/08/2000), sélectionné pour sa rapidité (j'ai pas dit qu'il y avait pas plus rapide ...) et sa simplicité (Qui a dit que rapide rimait avec compliqué ? Bon, tout est relatif ...).

J'ai repris le module sans toucher aux fondements, je l'ai un peu optimisé au niveau de la mémoire en exécution notament, et j'ai traduit tous les commentaires, sauf oublis, de l'anglais vers le français pour le plus grand plaisir de ceux/celles qui ne sont pas anglophones.

Bon, passons en aux faits :
Ce programme fait usage de l'algorytme de Huffman pour compresser des données, j'insiste sur le fait qu'il compresse, et n'archive pas (Winzip archive, Winrar archive ...). Je l'ai doté d'une interface intuitive (encore qu'imparfaite) que vous avez tout loisir d'améliorer à votre gré (Si vous en faites une merveille, vous pourrez me la donner quand même :D ???).

L'algorytme de Huffman ne donne pas des taux de compression miribolants (30% c'est bien ... Bon, dans certaines conditions particulières extrêmement rares dans la réalité, on atteint 98%, mais c'est pas référence ...). Sachez que la taux obtenu dépend essenciellement du type de données : plus elles sont répétitives, meilleur c'est. Cet algo est particulièrement efficace sur le texte (>Comme l'a précisé Jack), et j'ai constaté un bon taux sur les fichiers Excel XP. Ne vous attendez pas à des miracles, notament sur les formats déjà compressés (MPEG, GIF >Encore que ...<, MP3 ...) qui sont comme dit précédament déjà compressés :D !!!!

Je me suis déchiré pour que ce programme arbore le style visual de votre PC sous Windows XP. Le fichier .exe.manifest fourni avec doit être placé dans le même répertoire que l'exe compilé et avoir le même nom que lui pour que cela ait effet. Si le .manifest n'y est pas et que le code est inchangé, il se peut qu'il y ait des bugs (c'est rare toutefois ...)
Si vous êtes sous Windows PasXP ou que vous ne voulez pas en avoir le style (J'en connais comme ça ...), vous pouvez laisser tel qu'el ou supprimer le .exe.manifest et supprimer les lignes de codes y référant (J'ai mis des commentaires aux lignes en question).

Vous allez me demander pourquoi Diable je n'ai pas mis d'Option, mais des Checkbox ? C'est simple, je subis un bug avec mes Option : Option.Value=False quoi que je fasse, alors j'ai remplacé ...
A ce propos, ça m'a permis de tester la décompression d'un fichier non compressé : n'essayez pas, je vous le déconseille ... Dans la théorie, il y a un CheckSum pour éviter ça, mais en pratique je sais pas pourquoi, mais il marche pas toujours ... (En fait je crois voir pourquoi, mais faites gaffe tant que j'ai pas corrigé ...).

Bon, je crois que j'ai rien oublié ...
Voilà, bonne compression !!!

Source / Exemple :


Option Explicit
Public Zip as Object
Public Capture as Picture
Sub Main()
     On Error Resume Next
     Read Capture
     Read Zip
End Sub

Conclusion :


Je pense le mettre a jour quand j'aurai réussi à l'améliorer encore un peu et à supprimer la !@#*! de bug avec les CheckSums.
Si vous le modifiez, vous serez gentils de penser à me prévenir (Si vous voulez pas je m'en fous, je viendrai pas vérifier de toute façon ..., mais ça fait toujours plaisir !!!)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.