Petit logiciel de compression, besoin d'aide pour structurer méthode - Algo - Programmation
Marsh Posté le 16-03-2004 à 14:15:53
ce que tu decrit la ressemble assez fort a la compression RLE (Run Length Encoding) ca marche pas mal mais ca reste assez limité qd meme
si tu veux aller plus loin huffman est ton ami
tu na pas precisé non plus si tu voulais compresser avec ou sans destruction
Marsh Posté le 16-03-2004 à 14:17:08
Monochrome a écrit : Bonjour tlm, je développe en VB un petit programme de compression |
bizarre qd meme
Marsh Posté le 16-03-2004 à 14:19:29
red faction a écrit : ce que tu decrit la ressemble assez fort a la compression RLE (Run Length Encoding) ca marche pas mal mais ca reste assez limité qd meme |
C'est pas du tout du RLE ce qu'il décrit.
red faction a écrit : |
Les trolls c'est le vendredi.
Marsh Posté le 16-03-2004 à 14:20:36
skeye a écrit : |
ait pas fait attention sorry
Marsh Posté le 16-03-2004 à 22:37:14
red faction a écrit : ce que tu decrit la ressemble assez fort a la compression RLE (Run Length Encoding) ca marche pas mal mais ca reste assez limité qd meme |
Ça consiste en quoi avec destruction ? Si je compresse mon fichier, j'espère quand même qu'il fonctionnera toujours à la décompression
Marsh Posté le 17-03-2004 à 03:18:09
Ben jpeg, mpeg, vorbis... Tout les trucs qui compressent beaucoup et où tu t'en fout de perdre un peu d'info.
Marsh Posté le 17-03-2004 à 03:48:57
Ce genre de trucs (compression), ça fait pas mal appel à des opérations binaires, et pour ça VB c'est pas top.
Je verrais les choses ainsi :
1° parcours des données sources pour en extraire les stats :
- tu créés un tableau de 64 Ko initialisé à 0
chaque indique du tableau représente les stats d'un couple :
- i0 => couple 0-0
- i1 => couple 0-1
- i256 => couple 1-0
- tu parcours les données selon une fenêtre de 2 octets = tu lis 1° et 2° octet, puis 2° et 3°, 3° et 4° ...
- tu calcules l'indice du tableau de stat associé à ce coupe (octet1 * 256 + octet2) et tu incrémentes ce qui s'y trouve
2° parcours : tu compresses:
- Tu lis un couple (octet1 octet2)
- tu tests sa valeur dans le tableau de stats (à l'indice octet1 * 256 + octet2)
- si = 1 tu écris octets 1 et passe au coupe (octet2 octet3)
- sinon tu écris ce que tu veux
Tu as construit ton buffer compressé.
Marsh Posté le 16-03-2004 à 13:57:30
Bonjour tlm, je développe en VB un petit programme de compression (je ne poste pas dans VB car ma question n'est pas reliée à ca)
Pour l'instant, ce que je fais c'est que j'ouvre le fichier, et je place chaque octet dans un tableau, ce qui ressemble à ça :
Après ça, je forme des combinaisons de 2 octets en comptant les répétitions :
Maintenant, je suis rendu à reparcourir mon tableau des répétitions pour tester si la 2e colonne > 1. Si oui, je reparcoure mon tableau original pour changer (dans cet exemple) tous les 102 par un autre chiffre qui va représenter que ca a été compressé [ici je bloque], et je supprime les 17 du tableau.
Donc, mon fichier ressemblera à :
1=bo
1njour j'ai 11 à la jambe.
Mon problème c'est que c'est supra-lent et que je ne sais pas si je suis la bonne méthode.
Merci de me dire si ya qqch qui cloche !!