zlib --- zlib 壓縮與解壓縮

此模組允許使用 DEFLATE 演算法(常用於 zlib 函式庫與 gzip 封存工具)對二進位資料進行壓縮與解壓縮。

備註

建議使用 deflate.DeflateIO 而非此模組中的函式,因為它為壓縮與解壓縮提供了串流介面,在對檔案、socket 或串流讀取或寫入壓縮資料時,既方便又更節省記憶體。

可用性:

  • 由於此模組的功能與 deflate 模組已提供的功能重複,因此預設不包含在 OpenMV Cam 上

  • 可從 micropython-lib原始碼)安裝副本(或凍結至自訂韌體中)。詳情請參閱 套件管理。本文件即說明該模組。

  • 它依賴於內建的 deflate 模組,所有 OpenMV Cam 上皆有此模組。

  • 只有在內建的 deflate 模組中提供壓縮功能時,壓縮才可用——也就是說,基於 STM32 的 OpenMV Cam 上不可用(請參閱上方的可用性說明)。

函式

zlib.decompress(data: bytes, wbits: int = 15, /) bytes

data 解壓縮為一個 bytes 物件。

wbits 參數的運作方式與 zlib.compress() 相同,並具有以下額外的有效值:

  • 0:從 zlib 標頭自動判斷視窗大小(data 必須為 zlib 格式)。

  • 3547:自動偵測 zlib 或 gzip 格式。

zlib.compress() 相同,有關 wbits 參數的更多資訊,請參閱 zlib CPython 文件。同樣與 zlib.compress() 相同,MicroPython 也支援比 CPython 更小的視窗大小。更多 MicroPython 特有的細節 請參閱 deflate 模組文件。

如果要解壓縮的資料需要更大的視窗大小,則會在解壓縮過程中失敗。

zlib.compress(data: bytes, wbits: int = 15, /) bytes

data 壓縮為一個 bytes 物件。

wbits 讓您設定 DEFLATE 字典視窗大小與輸出格式。視窗大小讓您在記憶體用量與壓縮等級之間取捨。較大的視窗大小可讓壓縮器參照輸入中更早之前的片段。輸出格式有「raw」DEFLATE(無標頭/結尾)、zlib 與 gzip,其中後兩者包含標頭與檢查碼。

wbits 絕對值的低四位元設定 DEFLATE 字典視窗大小的以 2 為底的對數。因此舉例來說,wbits=10wbits=-10wbits=26 都會將視窗大小設定為 1024 位元組。有效的視窗大小為 515(含)(對應 32 至 32k 位元組)。

wbits 介於 -5-15 之間的負值對應「raw」輸出模式,介於 515 之間的正值對應 zlib 輸出模式,介於 2131 之間的正值對應 gzip 輸出模式。

有關 wbits 參數的更多資訊,請參閱 zlib CPython 文件。請注意,MicroPython 允許較小的視窗大小,這在記憶體受限時仍能達到合理的壓縮等級,非常有用。它也能加快壓縮器的速度。更多 MicroPython 特有的細節 請參閱 deflate 模組文件。