zlib — compresión y descompresión zlib

Este módulo permite la compresión y descompresión de datos binarios con el algoritmo DEFLATE (de uso habitual en la biblioteca zlib y en el archivador gzip).

Nota

Es preferible utilizar deflate.DeflateIO en lugar de las funciones de este módulo, ya que proporciona una interfaz de flujo para la compresión y descompresión que resulta cómoda y más eficiente en memoria al leer o escribir datos comprimidos en un archivo, socket o flujo.

Disponibilidad:

  • Este módulo no se incluye por defecto en la OpenMV Cam, ya que duplica una funcionalidad que ya proporciona el módulo deflate.

  • Se puede instalar una copia (o congelarla en firmware personalizado) desde micropython-lib (código fuente). Consulta Gestión de paquetes para obtener más información. Esta documentación describe ese módulo.

  • Depende del módulo integrado deflate, que está presente en todas las OpenMV Cam.

  • La compresión solo está disponible si la compresión está disponible en el módulo integrado deflate – es decir, no en las OpenMV Cam basadas en STM32 (véase su nota de disponibilidad más arriba).

Funciones

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

Descomprime data en un objeto bytes.

El parámetro wbits funciona igual que en zlib.compress(), con los siguientes valores válidos adicionales:

  • 0: Determina automáticamente el tamaño de la ventana a partir de la cabecera zlib (data debe estar en formato zlib).

  • 35 a 47: Detecta automáticamente el formato zlib o gzip.

Al igual que en zlib.compress(), consulta la documentación de CPython para zlib para obtener más información sobre el parámetro wbits. Al igual que en zlib.compress(), MicroPython también admite tamaños de ventana menores que CPython. Consulta más detalles específicos de MicroPython en la documentación del módulo deflate.

Si los datos que se van a descomprimir requieren un tamaño de ventana mayor, fallará durante la descompresión.

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

Comprime data en un objeto bytes.

wbits te permite configurar el tamaño de la ventana del diccionario DEFLATE y el formato de salida. El tamaño de la ventana permite equilibrar el uso de memoria frente al nivel de compresión. Un tamaño de ventana mayor permitirá al compresor referenciar fragmentos más atrás en la entrada. Los formatos de salida son DEFLATE «en bruto» (sin cabecera/pie), zlib y gzip, donde los dos últimos incluyen una cabecera y una suma de comprobación.

Los cuatro bits inferiores del valor absoluto de wbits establecen el logaritmo en base 2 del tamaño de la ventana del diccionario DEFLATE. Así, por ejemplo, wbits=10, wbits=-10 y wbits=26 establecen todos el tamaño de la ventana en 1024 bytes. Los tamaños de ventana válidos van de 5 a 15 inclusive (lo que corresponde a entre 32 y 32k bytes).

Los valores negativos de wbits entre -5 y -15 corresponden al modo de salida «en bruto», los valores positivos entre 5 y 15 corresponden al modo de salida zlib, y los valores positivos entre 21 y 31 corresponden al modo de salida gzip.

Consulta la documentación de CPython para zlib para obtener más información sobre el parámetro wbits. Ten en cuenta que MicroPython admite tamaños de ventana menores, lo que resulta útil cuando la memoria es limitada y, aun así, se logra un nivel de compresión razonable. También acelera el compresor. Consulta más detalles específicos de MicroPython en la documentación del módulo deflate.