Run-Length Encoding(RLE)

Run-Length Encoding(RLE)

  1. Run-length encoding是被许多bitmap文件格式支持的数据压缩算法
  2. 适合压缩任何数据类型,压缩比例受数据内容所影响
  3. RLE不能获得高级压缩方法的压缩比例,但是容易实现和执行
  4. 作为使用复杂压缩算法或者不使用压缩的另一种选择
  5. RLE工作方式是减少重复字符的物理尺寸,被编码成两个字节,第一个字节表示字符数量,第二个字节表示本身字符值。

例子

15个A的字符串在不压缩的情况下需要15个字节存储

AAAAAAAAAAAAAAA

当使用RLE编码之后,仅仅需要2个字节

15A

上面形成的15A表示一个RLE包,第一个字节15表示run的数量,表示重复的数量,第二个字节A表示run值,表示字符本身。
当run字符发生变化时或者run的数量超过了最大可用值,新的包会形成。
例如,字符串包含4个不同字符

AAAAAAbbbXXXXXt

使用RLE,可以形成4个2字节包

6A3b5X1t

当编码之后,15个字节字符串仅仅需要8字节字符串表示。压缩比例达到2:1。
长的run在特定数据类型中很少见,例如ASCII文本。
在上面的例子中,最后的run(t)仅仅包含一个字符,一个字符也是一个run,也需要一个run数量和run值,因此一个单个的run实际需要更多的空间。同样的道理,两个字符的数据当RLE编码后,需要相同的空间大小。
在上面的例子中,最后单个字符并不会影响压缩比例,因为数据存在很多长的run。
但是需要注意下面的情况:

Xtmprsqzntwlfb

使用RLE之后:

1X1t1m1p1r1s1q1z1n1t1w1l1f1b

RLE是非常简单和快速的,但是压缩比例依赖于数据本身,例如,黑白图片将会压缩非常好,因为大量连续的数据存储相同的颜色。但是拥有很多颜色的图片压缩比例就不会那么好,因为很少有连续数据存储相同颜色。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值