Une petite demonstration du fonctionnement de la compression LZW
Cette applet a été faite dans le cadre d'un TP/Projet informatique destiné à faire connaissance avec
le langage JAVA. Ce projet a été initie dans le cadre de la formation continue dispensée par le CNAM/CAMOS.
Le module correspondant est la valeur d'acceuil et de reconversion informatique débouchant sur un DEST.Diplome équivalent a BAC+4.
Cette valeur est destinée a ceux dont les origines profesionnelles ou scolaires ne sont pas en rapport avec la programmation et l'informatique pure. Comme quoi rien n'est impossible.
Faisons un peut de technique:
Le projet a pour but de montrer comment fonctionne la Compression LZW .
Petit historique:
La technique de compression et décompression LZW à été inventée par trois personnes que sont Lempel et Ziv. Ils ont conçu cet algorithme en 1977. Par la suite Welch l'a amélioré en 1984.C'est un algorithme de compression sans perte. Il existe d'autres variantes de LZW qui se nomment LZ**.
*Le brevet a été déposé par Unysis.
On a fréquemment demandé à Unisys si une licence d'Unisys est exigée afin d'utiliser le logiciel LZW obtenu par téléchargement sur Internet ou depuis d'autres sources. La réponse est simple. Dans tous les cas, une licence écrite ou un rapport signé par un représentant autorisé d'Unisys est exigé d'Unisys pour toute utilisation, vente ou distribution de n'importe quel logiciel (y compris les logiciels appelés "freeware"), et/ou matériel fournissant les capacités de conversion LZW (par exemple, logiciel téléchargé)
La variante non brevetée est le LZ77.
Définition de la compression:
La compression de données informatiques consiste à réduire la taille de l'information pour le stockage de cette information et son transport.
Description:
Cet algorithme réduit la taille des chaînes de caractères (c’est-à-dire les mots récurrents.).
Il utilise un dictionnaire c’est-à-dire une table de données contenant des chaînes de caractères.
Au cours du traitement de l’information, les chaînes de caractères sont placées une par une dans le dictionnaire. Lorsqu’une chaîne est déjà présente dans le dictionnaire, son code de fréquence d’utilisation est incrémenté. Les chaînes de caractères ayant des codes de fréquence élevés sont remplacées par un " mot " ayant un nombre de caractères le plus petit possible et le code de correspondance est inscrit dans le dictionnaire. On obtient ainsi une information encodée et son dictionnaire.
Compression (Pour l'Algo de L'Applet, Voir le cours) |
Décompression (Algo utilisé dans L'Applet) |
STRING = get input character WHILE there are still input characters DO CHARACTER = get input character IF STRING+CHARACTER is in the string table then STRING = STRING+character ELSE output the code for STRING add STRING+CHARACTER to the string table STRING = CHARACTER END of IF END of WHILE output the code for STRING |
Read OLD_CODE output OLD_CODE WHILE there are still input characters DO Read NEW_CODE IF NEW_CODE is not in the translation table THEN STRING = get translation of OLD_CODE STRING = STRING+CHARACTER ELSE STRING = get translation of NEW_CODE END of IF output STRING CHARACTER = first character in STRING add OLD_CODE + CHARACTER to the translation table OLD_CODE = NEW_CODE END of WHILE |
D'apres LZW Data Compression by Mark Nelson Dr. Dobb's Journal October, 1989 |
|||
Liens: |
|||
Un descriptif de l'applet | Compress | Articles et explications | Un Site interresant |
Le projet au format ZIP | Sun Download | Download JRE 1.3l | Le Site de Sun Java 1.3 |
La Documentation de L'applet au format JAVA DOC html |
Infos générales:
La combinaison de LZW et d'autres algorithmes de compression ont donné naissance à des produits très connus comme par exemple PKZIP,RAR.
Cette méthode est peu efficace pour les images mais donne de bons résultats pour les textes et les données informatiques en général (plus de 50%). Et poutant elle est utilisée pour le format GIF.
Pour infos :
Si l'applet ne fonctionne pas correctement sachez qu'elle a été faite avec le JDK 1.3 de SUN . D'autres part pour des raisons de frime, de nouvelles technologies enfin bref, pour être à la mode l'interface est entièrement faite en SWING. Donc PLug-In 1.3_0_0_2 de rigueur.
En fait je pense que SWING est beaucoup plus professionnelle que AWT. Elle est beaucoup plus riche et permet de faire de petites merveilles au niveau des applications Java1.3. (Elle est entièrement écrite en Java) En ce qui concerne les Swing Applet, on peut dire que l'applet que je vous presente est un peut en avance sur son temps, car voir des applet sur le WEB faites avec SWING est encore assez rare.(Nestscape 6 est compatible SWING) Ceci est du aux différents navigateurs qui ne supporte pas encore la plate-forme JAVA 1.3. Voir dans les prochains mois les évolutions des différents navigateurs.
Fait par Schild Patrick le 15/06/2001 | schild.patrick@wanadoo.fr |