La compression GIF est utilisée partout dans les sites WEB, ainsi que dans le transfet de fichier. C' est une compression qui ne dégrade pas l' image, c' est à dire qu' avant ou après la compression, l' image sera toujours de la même qualité.
Maintenant pour comprendre la compression GIF il faut considérer les fichiers images comme une suite de chiffres, car c' est ce qu' ils sont pour l' ordinateur, une suite d' octets chacun composé lui même de 8 bits.
Considérons une partie de cette suite: ' 123456 45897444343 123456 43448555465548645 123456' . Vous remarquez alors que certaine ' suite' de chiffres reviennent assez souvent. L' esprit GIF correspond alors à supprimez ces suites et pour chacune d' elles faire correpondre un code. Tout les codes sont ensuite référencé dans un dictionnaire.
Donc en faisant correspondre ' 123456' au caractères ' F' , le code précedent se retrouverait limité à celui ci ' F 45897444343 43448555465548645 F' . On voit bien que cela fait gangé un nombre de bits considérable. Si l' on généralise cette méthode à un fichier image, on peut obtenir des résultats spectaculaire sur la taille d' un fichier sans pour autant le dégrader.
Reste à savoir que cette technique à un nom, elle se nomme Lempel Ziv (LZV) et fut publié pour la première fois en 1977
Quoi vous n' etes pas rassasié sur la compression GIF? Bon on va aller plus loin, regardons par exemple le code de compression:
STRING = La chaine que l' on veut compressé
WHILE Qu' il y a encore des données a compressé DO
CHARACTER = Le caractere a codé
IF STRING+CHARACTER est dans le dictionnaire
STRING = STRING+character
ELSE
Sinon renvoyer le code pour STRING
ajoute STRING+CHARACTER au dictionnaire
STRING = CHARACTER
Sinon renvoyer le code pour STRING
END of IF
END of WHILE
|
---|
Et voici le code de décompression, reste à savoir que le dictionnaire peut etre retrouvé a partir du fichier et n' as pas à etre retransmit, réduisant encore une fois la taille.
Lis OLD_CODE
Renvoie OLD_CODE
WHILE qu' il y a des caracteres DO
lis NEW_CODE
STRING = lis la traduction de NEW_CODE
affiche STRING
CHARACTER = premier caractere dans STRING
ajoute OLD_CODE + CHARACTER au dictionnaire
OLD_CODE = NEW_CODE
END of WHILE
|
---|
Voilà la fin de l' article !!!;)
Quelques liens :
http://www.cs.tufts.edu/g/150MDC/classpages/LZW.html
http://www.dogma.net/markn/articles/lzw/lzw.htm
Article rédigé par: Jmix 90
le: 16/04/2004
Technique
: La compression GIF expliquée
Déjà
55376 visiteurs, Votre IP :