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).35do47: Automatyczne wykrywanie formatu zlib lub gzip.
Podobnie jak w przypadku
zlib.compress(), zobaczdokumentację CPython dla zlib, aby uzyskać więcej informacji o parametrze wbits. Podobnie jak wzlib.compress(), MicroPython obsługuje również mniejsze rozmiary okna niż CPython. Zobacz więcej szczegółów charakterystycznych dla MicroPython w dokumentacji modułudeflate.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=-10iwbits=26ustawiają rozmiar okna na 1024 bajty. Prawidłowe rozmiary okna to5do15włącznie (odpowiadające od 32 do 32k bajtów).Ujemne wartości wbits od
-5do-15odpowiadają trybowi wyjścia „surowemu”, wartości dodatnie od5do15odpowiadają trybowi wyjścia zlib, a wartości dodatnie od21do31odpowiadają 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łudeflate.