zlib — compressão e descompressão zlib

Este módulo permite a compressão e descompressão de dados binários com o algoritmo DEFLATE (comumente usado na biblioteca zlib e no arquivador gzip).

Nota

Prefira usar deflate.DeflateIO em vez das funções deste módulo, pois ela fornece uma interface de streaming para compressão e descompressão, que é conveniente e mais eficiente em memória ao trabalhar com leitura ou escrita de dados comprimidos em um arquivo, socket ou stream.

Disponibilidade:

  • Este módulo não está incluído na OpenMV Cam por padrão, pois duplica funcionalidades já fornecidas pelo módulo deflate.

  • Uma cópia pode ser instalada (ou congelada em um firmware personalizado) a partir do micropython-lib (fonte). Consulte Gerenciamento de pacotes para mais informações. Esta documentação descreve esse módulo.

  • Ele depende do módulo interno deflate, que está presente em todas as OpenMV Cams.

  • A compressão só está disponível se a compressão estiver disponível no módulo interno deflate – ou seja, não nas OpenMV Cams baseadas em STM32 (veja a nota de disponibilidade acima).

Funções

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

Descomprime data em um objeto bytes.

O parâmetro wbits funciona da mesma forma que em zlib.compress(), com os seguintes valores válidos adicionais:

  • 0: Determina automaticamente o tamanho da janela a partir do cabeçalho zlib (data deve estar no formato zlib).

  • 35 a 47: Detecta automaticamente o formato zlib ou gzip.

Assim como em zlib.compress(), consulte a documentação do CPython para zlib para mais informações sobre o parâmetro wbits. Assim como em zlib.compress(), o MicroPython também suporta tamanhos de janela menores que o CPython. Veja mais detalhes específicos do MicroPython na documentação do módulo deflate.

Se os dados a serem descomprimidos exigirem um tamanho de janela maior, a descompressão falhará.

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

Comprime data em um objeto bytes.

wbits permite configurar o tamanho da janela do dicionário DEFLATE e o formato de saída. O tamanho da janela permite um compromisso entre uso de memória e nível de compressão. Um tamanho de janela maior permite que o compressor referencie fragmentos mais distantes na entrada. Os formatos de saída são DEFLATE “raw” (sem cabeçalho/rodapé), zlib e gzip, sendo que os dois últimos incluem um cabeçalho e uma soma de verificação.

Os quatro bits inferiores do valor absoluto de wbits definem o logaritmo base 2 do tamanho da janela do dicionário DEFLATE. Assim, por exemplo, wbits=10, wbits=-10 e wbits=26 definem todos o tamanho da janela como 1024 bytes. Tamanhos de janela válidos vão de 5 a 15 inclusive (correspondendo a 32 a 32k bytes).

Valores negativos de wbits entre -5 e -15 correspondem ao modo de saída “raw”, valores positivos entre 5 e 15 correspondem ao modo de saída zlib, e valores positivos entre 21 e 31 correspondem ao modo de saída gzip.

Consulte a documentação do CPython para zlib para mais informações sobre o parâmetro wbits. Observe que o MicroPython permite tamanhos de janela menores, o que é útil quando a memória é limitada e ainda assim atinge um nível razoável de compressão. Isso também acelera o compressor. Veja mais detalhes específicos do MicroPython na documentação do módulo deflate.