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 格式)。35至47:自動偵測 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=10、wbits=-10與wbits=26都會將視窗大小設定為 1024 位元組。有效的視窗大小為5至15(含)(對應 32 至 32k 位元組)。wbits 介於
-5與-15之間的負值對應「raw」輸出模式,介於5與15之間的正值對應 zlib 輸出模式,介於21與31之間的正值對應 gzip 輸出模式。有關 wbits 參數的更多資訊,請參閱
zlib 的 CPython 文件。請注意,MicroPython 允許較小的視窗大小,這在記憶體受限時仍能達到合理的壓縮等級,非常有用。它也能加快壓縮器的速度。更多 MicroPython 特有的細節 請參閱deflate模組文件。