20Fermer22
BookeldOrLe 15/08/2007 à 02:49
Godzil (./16) :
quand tu compte coder sur plus de 256 (enfin 255 plutot) ton décompresseur sais que l'octet suivant est pour la meme suite de pixel, ça permet de gagner 1 octet pour bcp de cas, et a chaque fois qu'il rencontre 255, il l'additionne avec l'octet suivant, donc


Mouais mais le unaire (même avec des gros bâtons de 255 unités), c'est pas le mieux.
Si tu as une grosse image noire, tu vas prendre 128 octets.
Une idée c'est lorsque tu trouves un 255 de considérer ensuite les octets suivants comme la représentation binaire d'un entier, en gardant un bit de tag.
Par exemple, on réserve l'octet de poids faible pour signifier 0 = fin de la représentation binaire, 1 = lire encore un byte.
b = read ()
if (b = TAG_UEULE) {
 v = read ()
 n = 0
 b = read ()
 if (b = 255) {
   b = read ()
   while (b & 1) {
     n = n << 7 | b >> 1
     b = read ()
   }
    n += 255
 } else {
   n = b
 }
  for i = 1 to n do {
    output (v)
 }
} else {
 output (b)
}


avec ça, une image noire prend 5 octets