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 格式)。

  • 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 字典窗口大小和输出格式。窗口大小让你能够在内存占用与压缩级别之间进行权衡。更大的窗口大小将允许压缩器引用输入中更靠前的片段。输出格式有"原始"DEFLATE(无标头/尾部)、zlib 和 gzip,其中后两者包含标头和校验和。

wbits 绝对值的低四位设置 DEFLATE 字典窗口大小的以 2 为底的对数。因此,例如 wbits=10wbits=-10wbits=26 都将窗口大小设置为 1024 字节。有效的窗口大小为 515(含),对应 32 到 32k 字节。

wbits-5-15 之间的负值对应"原始"输出模式,515 之间的正值对应 zlib 输出模式,2131 之间的正值对应 gzip 输出模式。

有关 wbits 参数的更多信息请参阅 zlib CPython 文档。请注意,MicroPython 允许使用更小的窗口大小,这在内存受限时很有用,同时仍能达到合理的压缩级别。它还能加快压缩器的速度。更多 MicroPython 特有的细节 请参阅 deflate 模块文档。