zlib --- zlib による圧縮と展開

このモジュールは、DEFLATE アルゴリズム(zlib ライブラリや gzip アーカイバで一般的に使用される)を用いたバイナリデータの圧縮と展開を可能にします。

注釈

このモジュールの関数の代わりに deflate.DeflateIO を使用することをお勧めします。これは圧縮と展開のストリーミングインターフェースを提供し、圧縮データをファイル、ソケット、またはストリームへ読み書きする際に便利で、よりメモリ効率に優れています。

利用可能環境:

  • このモジュールは既定では OpenMV Cam には含まれていませんdeflate モジュールがすでに提供している機能と重複するためです。

  • 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 より小さいウィンドウサイズをサポートしています。deflate モジュールのドキュメントにある MicroPython 固有の詳細 も参照してください。

展開対象のデータがより大きなウィンドウサイズを必要とする場合、展開中に失敗します。

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

data を圧縮して bytes オブジェクトにします。

wbits を使用すると、DEFLATE 辞書のウィンドウサイズと出力形式を構成できます。ウィンドウサイズによって、メモリ使用量と圧縮レベルのトレードオフを調整できます。ウィンドウサイズを大きくすると、圧縮器は入力内のより前方にあるフラグメントを参照できるようになります。出力形式には、「raw」DEFLATE(ヘッダ/フッタなし)、zlib、gzip があり、後者の 2 つにはヘッダとチェックサムが含まれます。

wbits の絶対値の下位 4 ビットが、DEFLATE 辞書のウィンドウサイズの 2 を底とする対数を設定します。たとえば、wbits=10wbits=-10wbits=26 はいずれもウィンドウサイズを 1024 バイトに設定します。有効なウィンドウサイズは 5 から 15 まで(32 から 32k バイトに相当)です。

-5 から -15 までの wbits の負の値は「raw」出力モードに、5 から 15 までの正の値は zlib 出力モードに、21 から 31 までの正の値は gzip 出力モードに対応します。

wbits パラメータの詳細については、zlib に関する CPython ドキュメント を参照してください。MicroPython はより小さいウィンドウサイズを許容することに注意してください。これは、メモリが制約されている状況でも、妥当なレベルの圧縮を達成しつつ役立ちます。また、圧縮器の高速化にもつながります。deflate モジュールのドキュメントにある MicroPython 固有の詳細 も参照してください。