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