zlib — kompresja i dekompresja zlib

Ten moduł umożliwia kompresję i dekompresję danych binarnych za pomocą algorytmu DEFLATE (powszechnie używanego w bibliotece zlib i archiwizatorze gzip).

Informacja

Zaleca się stosowanie deflate.DeflateIO zamiast funkcji z tego modułu, ponieważ zapewnia ono strumieniowy interfejs do kompresji i dekompresji, który jest wygodny i bardziej oszczędny pod względem pamięci podczas pracy z odczytem lub zapisem skompresowanych danych do pliku, gniazda lub strumienia.

Dostępność:

  • Ten moduł nie jest domyślnie dołączany do OpenMV Cam, ponieważ powiela funkcjonalność zapewnianą już przez moduł deflate.

  • Kopię można zainstalować (lub wbudować na stałe w niestandardowe oprogramowanie układowe) z micropython-lib (źródło). Zobacz Zarządzanie pakietami, aby uzyskać więcej informacji. Ta dokumentacja opisuje ten moduł.

  • Opiera się on na wbudowanym module deflate, który jest obecny na wszystkich OpenMV Cam.

  • Kompresja jest dostępna tylko wtedy, gdy kompresja jest dostępna we wbudowanym module deflate – czyli nie na OpenMV Cam opartych na STM32 (zobacz powyższą uwagę o dostępności).

Funkcje

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

Dekompresuje data do obiektu bytes.

Parametr wbits działa tak samo jak w zlib.compress() z następującymi dodatkowymi prawidłowymi wartościami:

  • 0: Automatycznie określa rozmiar okna z nagłówka zlib (data muszą być w formacie zlib).

  • 35 do 47: Automatyczne wykrywanie formatu zlib lub gzip.

Podobnie jak w przypadku zlib.compress(), zobacz dokumentację CPython dla zlib, aby uzyskać więcej informacji o parametrze wbits. Podobnie jak w zlib.compress(), MicroPython obsługuje również mniejsze rozmiary okna niż CPython. Zobacz więcej szczegółów charakterystycznych dla MicroPython w dokumentacji modułu deflate.

Jeśli dane do dekompresji wymagają większego rozmiaru okna, dekompresja zakończy się niepowodzeniem.

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

Kompresuje data do obiektu bytes.

wbits pozwala skonfigurować rozmiar okna słownika DEFLATE oraz format wyjściowy. Rozmiar okna pozwala na kompromis między zużyciem pamięci a poziomem kompresji. Większy rozmiar okna pozwoli kompresorowi odwoływać się do fragmentów położonych dalej wstecz w danych wejściowych. Formaty wyjściowe to „surowy” DEFLATE (bez nagłówka/stopki), zlib oraz gzip, gdzie dwa ostatnie zawierają nagłówek i sumę kontrolną.

Cztery najniższe bity wartości bezwzględnej wbits ustawiają logarytm o podstawie 2 rozmiaru okna słownika DEFLATE. Tak więc na przykład wbits=10, wbits=-10 i wbits=26 ustawiają rozmiar okna na 1024 bajty. Prawidłowe rozmiary okna to 5 do 15 włącznie (odpowiadające od 32 do 32k bajtów).

Ujemne wartości wbits od -5 do -15 odpowiadają trybowi wyjścia „surowemu”, wartości dodatnie od 5 do 15 odpowiadają trybowi wyjścia zlib, a wartości dodatnie od 21 do 31 odpowiadają trybowi wyjścia gzip.

Zobacz dokumentację CPython dla zlib, aby uzyskać więcej informacji o parametrze wbits. Zwróć uwagę, że MicroPython pozwala na mniejsze rozmiary okna, co jest przydatne, gdy pamięć jest ograniczona, a jednocześnie umożliwia osiągnięcie rozsądnego poziomu kompresji. Przyspiesza to również kompresor. Zobacz więcej szczegółów charakterystycznych dla MicroPython w dokumentacji modułu deflate.