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 更小的窗口大小。更多 MicroPython 特有的细节 请参阅deflate模块文档。如果待解压缩的数据需要更大的窗口大小,它将在解压缩过程中失败。
- zlib.compress(data: bytes, wbits: int = 15, /) bytes¶
将 data 压缩为一个 bytes 对象。
wbits 允许你配置 DEFLATE 字典窗口大小和输出格式。窗口大小让你能够在内存占用与压缩级别之间进行权衡。更大的窗口大小将允许压缩器引用输入中更靠前的片段。输出格式有"原始"DEFLATE(无标头/尾部)、zlib 和 gzip,其中后两者包含标头和校验和。
wbits 绝对值的低四位设置 DEFLATE 字典窗口大小的以 2 为底的对数。因此,例如
wbits=10、wbits=-10和wbits=26都将窗口大小设置为 1024 字节。有效的窗口大小为5到15(含),对应 32 到 32k 字节。wbits 在
-5到-15之间的负值对应"原始"输出模式,5到15之间的正值对应 zlib 输出模式,21到31之间的正值对应 gzip 输出模式。有关 wbits 参数的更多信息请参阅
zlib 的 CPython 文档。请注意,MicroPython 允许使用更小的窗口大小,这在内存受限时很有用,同时仍能达到合理的压缩级别。它还能加快压缩器的速度。更多 MicroPython 特有的细节 请参阅deflate模块文档。