zlib — compresie și decompresie zlib

Acest modul permite compresia și decompresia datelor binare cu algoritmul DEFLATE (utilizat frecvent în biblioteca zlib și în arhivatorul gzip).

Notă

Preferați să folosiți deflate.DeflateIO în locul funcțiilor din acest modul, deoarece oferă o interfață de tip flux pentru compresie și decompresie, care este convenabilă și mai eficientă din punct de vedere al memoriei atunci când citiți sau scrieți date comprimate într-un fișier, socket sau flux.

Disponibilitate:

  • Acest modul nu este inclus pe OpenMV Cam în mod implicit, deoarece duplică o funcționalitate deja oferită de modulul deflate.

  • O copie poate fi instalată (sau înghețată în firmware personalizat) din micropython-lib (sursă). Consultați Gestionarea pachetelor pentru mai multe informații. Această documentație descrie acel modul.

  • Se bazează pe modulul încorporat deflate, care este prezent pe toate plăcile OpenMV Cam.

  • Compresia este disponibilă doar dacă compresia este disponibilă în modulul încorporat deflate – adică nu pe plăcile OpenMV Cam bazate pe STM32 (consultați nota privind disponibilitatea de mai sus).

Funcții

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

Decomprimă data într-un obiect bytes.

Parametrul wbits funcționează la fel ca pentru zlib.compress(), cu următoarele valori valide suplimentare:

  • 0: Determină automat dimensiunea ferestrei din antetul zlib (data trebuie să fie în format zlib).

  • 35 până la 47: Detectează automat fie formatul zlib, fie formatul gzip.

La fel ca pentru zlib.compress(), consultați documentația CPython pentru zlib pentru mai multe informații despre parametrul wbits. La fel ca pentru zlib.compress(), MicroPython acceptă, de asemenea, dimensiuni de fereastră mai mici decât CPython. Consultați mai multe detalii specifice MicroPython în documentația modulului deflate.

Dacă datele care urmează să fie decomprimate necesită o dimensiune de fereastră mai mare, operația va eșua în timpul decompresiei.

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

Comprimă data într-un obiect bytes.

wbits vă permite să configurați dimensiunea ferestrei dicționarului DEFLATE și formatul de ieșire. Dimensiunea ferestrei vă permite să faceți un compromis între utilizarea memoriei și nivelul de compresie. O dimensiune mai mare a ferestrei va permite compresorului să facă referire la fragmente aflate mai în urmă în datele de intrare. Formatele de ieșire sunt DEFLATE „brut” (fără antet/subsol), zlib și gzip, ultimele două incluzând un antet și o sumă de control.

Cei patru biți inferiori ai valorii absolute a lui wbits stabilesc logaritmul în baza 2 al dimensiunii ferestrei dicționarului DEFLATE. Astfel, de exemplu, wbits=10, wbits=-10 și wbits=26 setează toate dimensiunea ferestrei la 1024 de octeți. Dimensiunile valide ale ferestrei sunt de la 5 la 15 inclusiv (corespunzând a 32 până la 32k octeți).

Valorile negative ale lui wbits între -5 și -15 corespund modului de ieșire „brut”, valorile pozitive între 5 și 15 corespund modului de ieșire zlib, iar valorile pozitive între 21 și 31 corespund modului de ieșire gzip.

Consultați documentația CPython pentru zlib pentru mai multe informații despre parametrul wbits. Rețineți că MicroPython permite dimensiuni de fereastră mai mici, ceea ce este util atunci când memoria este limitată, obținându-se totuși un nivel rezonabil de compresie. De asemenea, accelerează compresorul. Consultați mai multe detalii specifice MicroPython în documentația modulului deflate.