RLE压缩算法

  • RLE压缩算法形成长度压缩算法,Run Length Encoding.
  • 主要用途:对黑白图像和基于调色板的单调图像有很高的压缩性能。

压缩算法基本思想

基本:数据块的长度设定为1Bite,表示块数的的属性为1Bite,所以对于小于256色的图像文件或文本文件,块长度选择1Bite比较合适

连续的重复数据块

两个字节表示原来多个字节重复数据

[data][data][data][data][data] => [5][data]
若重复次数超过一字节所能计数,则重头开始

连续非重复数据块

方法1

将每个不重复的数据当做只重复一次的连续重复数据处理

问题:对于连续出现的不重复数据,会因为插入太多块属性字节而数据膨胀一倍,数据足够随机的话,只会恶化
[data1][data2][data3][data4][data5] =>>[1][data1][1][data2][1][data3][1][data4][1][data5]
岂止是恶化简直是崩溃

方法2

将数据分为连续的重复数据和连续的非重复数据,连续的非重复数据不处理直接把数据扔进去,通过一个长度属性的最高位来标识后续是什么类型,长度属性的其余位来标识有多少的数位(高位1后续位连续数据块,高位0后续位非连续数据块)

case:[data][data][data][data1][data2][data3][data4][data4] =>
[131][data][3][data1][data2][data3][130][data4]

你可能感兴趣的:(RLE压缩算法)