zlib — compression et décompression zlib

Ce module permet la compression et la décompression de données binaires à l’aide de l”algorithme DEFLATE (couramment utilisé dans la bibliothèque zlib et l’archiveur gzip).

Note

Préférez utiliser deflate.DeflateIO plutôt que les fonctions de ce module, car il fournit une interface de flux pour la compression et la décompression, ce qui est pratique et plus économe en mémoire lors de la lecture ou de l’écriture de données compressées dans un fichier, un socket ou un flux.

Disponibilité :

  • Ce module n’est pas inclus sur l’OpenMV Cam par défaut, car il fait double emploi avec une fonctionnalité déjà fournie par le module deflate.

  • Une copie peut être installée (ou figée dans un micrologiciel personnalisé) depuis micropython-lib (source). Voir Gestion des paquets pour plus d’informations. Cette documentation décrit ce module.

  • Il s’appuie sur le module intégré deflate, présent sur toutes les OpenMV Cam.

  • La compression n’est disponible que si elle l’est dans le module intégré deflate – c’est-à-dire pas sur les OpenMV Cam basées sur STM32 (voir sa note de disponibilité ci-dessus).

Fonctions

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

Décompresse data en un objet bytes.

Le paramètre wbits fonctionne de la même manière que pour zlib.compress() avec les valeurs valides supplémentaires suivantes :

  • 0 : détermine automatiquement la taille de la fenêtre à partir de l’en-tête zlib (data doit être au format zlib).

  • 35 à 47 : détecte automatiquement le format zlib ou gzip.

Comme pour zlib.compress(), consultez la documentation CPython de zlib pour plus d’informations sur le paramètre wbits. Comme pour zlib.compress(), MicroPython prend également en charge des tailles de fenêtre plus petites que CPython. Voir plus de détails propres à MicroPython dans la documentation du module deflate.

Si les données à décompresser nécessitent une taille de fenêtre plus grande, la décompression échouera.

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

Compresse data en un objet bytes.

wbits vous permet de configurer la taille de la fenêtre du dictionnaire DEFLATE et le format de sortie. La taille de la fenêtre permet d’arbitrer entre utilisation mémoire et niveau de compression. Une taille de fenêtre plus grande permet au compresseur de référencer des fragments plus éloignés en arrière dans l’entrée. Les formats de sortie sont le DEFLATE « brut » (sans en-tête ni pied de page), zlib et gzip, ces deux derniers incluant un en-tête et une somme de contrôle.

Les quatre bits de poids faible de la valeur absolue de wbits définissent le logarithme en base 2 de la taille de la fenêtre du dictionnaire DEFLATE. Ainsi, par exemple, wbits=10, wbits=-10 et wbits=26 définissent tous la taille de la fenêtre à 1024 octets. Les tailles de fenêtre valides vont de 5 à 15 inclus (correspondant à 32 à 32k octets).

Les valeurs négatives de wbits entre -5 et -15 correspondent au mode de sortie « brut », les valeurs positives entre 5 et 15 correspondent au mode de sortie zlib, et les valeurs positives entre 21 et 31 correspondent au mode de sortie gzip.

Consultez la documentation CPython de zlib pour plus d’informations sur le paramètre wbits. Notez que MicroPython autorise des tailles de fenêtre plus petites, ce qui est utile lorsque la mémoire est limitée tout en obtenant un niveau de compression raisonnable. Cela accélère également le compresseur. Voir plus de détails propres à MicroPython dans la documentation du module deflate.