Run-Lenght Encoding

La compresión RLE se basa en alacenar las repeticiones c0nsecutivas de los valores que componen un fichero. se usa un contador del numero de repeticiones y el valor que se repite.

Contador de repeticiones – Datos a Repetir

Se puede observar mejor en el siguiente ejemplo:

A A B B B B B C C C C D B B B E F F (18 bytes)

2 A 5 B 4 C 1 D 3 B 1 E 2 F (14 bytes)

Existes formatos que utilizan el Run-Lenght enconding como pueden ser:

  • MacPaint: Usa PackBits (Una variante de Run-Length Encoding) con rangos de valores para el indicador de repeticiones entre [-1,127]
    • Si el valor del indicador de repeticiones esta entre [0,127] indica que los siguientes (indicador de repeticiones +1) bytes son literales
    • Si el valor del indicador de repeticiones esta entre [-127,-1] indica que el siguiente byte se repite (-1*indicador de repeticiones +1 ) veces
    • Veamoslo en el siguiente ejemplo:
    • 5 5 14 14 14 14 14 8 8 8 8 7 3 2 5 5 5
    • [-1] 5 [-4] 14 [-3] 8 [2] 7 3 2 [-2] 5
  • PCX: Utiliza los dos primeros bits de mayor peso de cada byte para diferenciar entre indicadores de repeticiones y datos
    • Si ambos bits son 1 [11XXXXXXX] indica que es un indicador de repeticiones siendo XXXXXX el numero de veces que se repite el siguiente byte
    • Para el resto de los casos [00XXXXXX],[01XXXXXX] y [10XXXXXX]  son valores literales veamoslo en el siguiente ejemplo
    • 5 5 255 254 17 255 255 255 255
    • 11000011 5 11000001 255 1100001 254 17 11000100 255
    • el código 1100001 afecta a los valores 254 17
  • Targa y TIFF