zlib — сжатие и распаковка zlib

Этот модуль позволяет сжимать и распаковывать двоичные данные с помощью алгоритма DEFLATE (широко используемого в библиотеке zlib и архиваторе gzip).

Примечание

Предпочтительнее использовать deflate.DeflateIO вместо функций этого модуля, так как он предоставляет потоковый интерфейс к сжатию и распаковке, который удобен и более эффективен по памяти при чтении или записи сжатых данных в файл, сокет или поток.

Доступность:

  • Этот модуль по умолчанию не входит в OpenMV Cam, так как дублирует функциональность, уже предоставляемую модулем deflate.

  • Копию можно установить (или встроить в пользовательскую прошивку) из micropython-lib (исходный код). Подробнее см. в Управление пакетами. Эта документация описывает данный модуль.

  • Он опирается на встроенный модуль deflate, который присутствует на всех OpenMV Cam.

  • Сжатие доступно только в том случае, если оно доступно во встроенном модуле deflate — то есть не на OpenMV Cam на базе STM32 (см. примечание о доступности выше).

Функции

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

Распаковывает data в объект bytes.

Параметр wbits работает так же, как для zlib.compress(), со следующими дополнительными допустимыми значениями:

  • 0: автоматически определять размер окна из заголовка zlib (data должны быть в формате zlib).

  • от 35 до 47: автоопределение формата zlib либо gzip.

Как и для zlib.compress(), см. документацию CPython по zlib для дополнительной информации о параметре wbits. Как и для zlib.compress(), MicroPython также поддерживает меньшие размеры окна, чем CPython. Подробнее см. особенности MicroPython в документации модуля deflate.

Если для распаковываемых данных требуется больший размер окна, распаковка завершится неудачей.

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

Сжимает data в объект bytes.

wbits позволяет настроить размер окна словаря DEFLATE и формат вывода. Размер окна позволяет находить компромисс между использованием памяти и уровнем сжатия. Больший размер окна позволяет компрессору ссылаться на фрагменты, расположенные дальше во входных данных. Форматы вывода — это «сырой» DEFLATE (без заголовка/завершителя), zlib и gzip, причём два последних включают заголовок и контрольную сумму.

Младшие четыре бита абсолютного значения wbits задают двоичный логарифм размера окна словаря DEFLATE. Так, например, wbits=10, wbits=-10 и wbits=26 — все устанавливают размер окна в 1024 байта. Допустимые размеры окна — от 5 до 15 включительно (соответствуют от 32 до 32k байт).

Отрицательные значения wbits от -5 до -15 соответствуют «сырому» режиму вывода, положительные значения от 5 до 15 соответствуют режиму вывода zlib, а положительные значения от 21 до 31 соответствуют режиму вывода gzip.

См. документацию CPython по zlib для дополнительной информации о параметре wbits. Обратите внимание, что MicroPython допускает меньшие размеры окна, что полезно при ограниченной памяти и при этом позволяет достичь приемлемого уровня сжатия. Это также ускоряет компрессор. Подробнее см. особенности MicroPython в документации модуля deflate.