> 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 和其他壓縮演算法相比如何?
相較於 LZ77、Huffman 編碼等演算法,RLE 結構更簡單、實作更容易,但壓縮比通常較低。常被用作前處理步驟,或用在重視簡單性的情境,例如傳真或某些嵌入式格式。