> rle | 压缩 | 重复 <
// Run-Length Encoding - 为重复数据设计的简单压缩算法
[COMPRESS]
数据压缩
通过高效编码重复序列,减少文件体积。
[SIMPLE]
算法简单
实现与理解成本低,压缩/解压速度快。
[FORMATS]
多种格式支持
同时支持简单 RLE 以及 PackBits(用于 TIFF)格式。
>> 技术说明
RLE 的工作原理:
游程编码将连续重复的数据段替换为“重复次数 + 单个值”。简单 RLE 使用计数+值对,而 PackBits 使用控制字节来区分“游程”(重复段)和“字面量”(原始数据)片段。
压缩示例:
Simple RLE: AAAABBBCC → 4A3B2C ABCDE → 1A1B1C1D1E PackBits: [Run] AAA → FD 41 (3 × 'A') [Literal] ABC → 02 41 42 43
RLE 的典型应用:
- >图像压缩(BMP、PCX、TIFF 等)
- >传真数据传输
- >图标与精灵帧(sprite)存储
- >稀疏数据压缩
- >实现非常简单
>> 常见问题
什么是 Run-Length Encoding(RLE)?
RLE 是一种非常简单的无损压缩算法,会把连续相同的元素替换为“次数 + 单个值”。对于包含大量重复内容的数据(例如简单位图或稀疏矩阵),它可以显著降低大小。
简单 RLE 和 PackBits 有什么区别?
简单 RLE 直接使用“次数+值”对(例如 4A = AAAA)。PackBits 使用控制字节:负值表示后面是重复游程,正值表示后面是字面量数据。PackBits 常用于 TIFF 图像,对混合数据更友好。
RLE 在什么场景下最有效?
当数据中存在很多长的重复序列时,RLE 效果最好。如果数据接近随机、几乎没有重复,RLE 不仅压不下去,反而可能让数据变大。
RLE 和其他压缩算法相比如何?
RLE 要比 LZ77、Huffman 编码等算法简单得多,但压缩率也通常更低。它常作为预处理步骤,或用于更看重简单性的场景,比如传真或某些嵌入式格式。