zlib — zlib-compressie en -decompressie

Deze module maakt compressie en decompressie van binaire gegevens mogelijk met het DEFLATE-algoritme (veelgebruikt in de zlib-bibliotheek en de gzip-archiver).

Notitie

Geef de voorkeur aan het gebruik van deflate.DeflateIO in plaats van de functies in deze module, aangezien deze een streaming-interface biedt voor compressie en decompressie, wat handig en geheugenefficiënter is bij het lezen of schrijven van gecomprimeerde gegevens naar een bestand, socket of stream.

Beschikbaarheid:

  • Deze module is standaard niet opgenomen op de OpenMV Cam, omdat ze functionaliteit dupliceert die al wordt geboden door de module deflate.

  • Een kopie kan worden geïnstalleerd (of in aangepaste firmware worden ingevroren) vanuit micropython-lib (bron). Zie Pakketbeheer voor meer informatie. Deze documentatie beschrijft die module.

  • Ze is afhankelijk van de ingebouwde module deflate, die op alle OpenMV Cams aanwezig is.

  • Compressie is alleen beschikbaar als compressie beschikbaar is in de ingebouwde module deflate – dat wil zeggen, niet op de op STM32 gebaseerde OpenMV Cams (zie de beschikbaarheidsopmerking hierboven).

Functies

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

Decomprimeert data tot een bytes-object.

De parameter wbits werkt op dezelfde manier als bij zlib.compress() met de volgende aanvullende geldige waarden:

  • 0: Bepaalt automatisch de venstergrootte uit de zlib-header (data moet in zlib-formaat zijn).

  • 35 tot 47: Detecteert automatisch het zlib- of het gzip-formaat.

Net als bij zlib.compress() raadpleeg je de CPython-documentatie voor zlib voor meer informatie over de parameter wbits. Net als bij zlib.compress() ondersteunt MicroPython ook kleinere venstergroottes dan CPython. Zie meer MicroPython-specifieke details in de documentatie van de module deflate.

Als de te decomprimeren gegevens een grotere venstergrootte vereisen, mislukt dit tijdens de decompressie.

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

Comprimeert data tot een bytes-object.

Met wbits kun je de venstergrootte van het DEFLATE-woordenboek en het uitvoerformaat configureren. Met de venstergrootte kun je geheugengebruik afwegen tegen compressieniveau. Een grotere venstergrootte stelt de compressor in staat om naar fragmenten verder terug in de invoer te verwijzen. De uitvoerformaten zijn “raw” DEFLATE (geen header/footer), zlib en gzip, waarbij de laatste twee een header en checksum bevatten.

De lage vier bits van de absolute waarde van wbits stellen de logaritme met grondtal 2 van de venstergrootte van het DEFLATE-woordenboek in. Dus bijvoorbeeld wbits=10, wbits=-10 en wbits=26 stellen de venstergrootte allemaal in op 1024 bytes. Geldige venstergroottes zijn 5 tot en met 15 (overeenkomend met 32 tot 32k bytes).

Negatieve waarden van wbits tussen -5 en -15 komen overeen met de “raw” uitvoermodus, positieve waarden tussen 5 en 15 komen overeen met de zlib-uitvoermodus, en positieve waarden tussen 21 en 31 komen overeen met de gzip-uitvoermodus.

Zie de CPython-documentatie voor zlib voor meer informatie over de parameter wbits. Merk op dat MicroPython kleinere venstergroottes toestaat, wat nuttig is wanneer het geheugen beperkt is en er toch een redelijk compressieniveau wordt bereikt. Het versnelt ook de compressor. Zie meer MicroPython-specifieke details in de documentatie van de module deflate.