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 та формат виводу. Розмір вікна дозволяє балансувати між використанням пам’яті та рівнем стиснення. Більший розмір вікна дозволить компресору посилатися на фрагменти, розташовані далі у вхідних даних. Формати виводу: «raw» DEFLATE (без заголовка/кінцівки), zlib та gzip, де останні два включають заголовок та контрольну суму.

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

Від’ємні значення wbits від -5 до -15 відповідають режиму виводу «raw», додатні значення від 5 до 15 відповідають режиму виводу zlib, а додатні значення від 21 до 31 відповідають режиму виводу gzip.

Дивіться документацію CPython для zlib для отримання додаткової інформації про параметр wbits. Зауважте, що MicroPython дозволяє менші розміри вікна, що корисно при обмеженій пам’яті і водночас забезпечує розумний рівень стиснення. Це також прискорює роботу компресора. Дивіться більше деталей, специфічних для MicroPython, у документації модуля deflate.