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 (utilizado comummente na biblioteca zlib e no arquivador gzip).

Nota

Prefira utilizar deflate.DeflateIO em vez das funções neste módulo, pois fornece uma interface de fluxo para compressão e descompressão, o que é conveniente e mais eficiente em termos de memória ao trabalhar com leitura ou escrita de dados comprimidos num ficheiro, socket ou fluxo.

Disponibilidade:

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

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

  • Depende do módulo integrado 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 integrado deflate – ou seja, não nas OpenMV Cams baseadas em STM32 (consulte a nota de disponibilidade acima).

Funções

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

Descomprime data num objeto bytes.

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

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

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

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

Se os dados a descomprimir exigirem um tamanho de janela maior, a operação falhará durante a descompressão.

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

Comprime data num objeto bytes.

wbits permite configurar o tamanho da janela do dicionário DEFLATE e o formato de saída. O tamanho da janela permite trocar utilização de memória por nível de compressão. Uma janela maior permitirá ao compressor referenciar fragmentos mais distantes na entrada. Os formatos de saída são DEFLATE «raw» (sem cabeçalho/rodapé), zlib e gzip, onde os dois últimos incluem um cabeçalho e soma de verificação.

Os quatro bits inferiores do valor absoluto de wbits definem o logaritmo de 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 para 1024 bytes. Os tamanhos de janela válidos sã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 CPython para zlib para mais informações sobre o parâmetro wbits. Note que o MicroPython permite tamanhos de janela menores, o que é útil quando a memória é limitada e ainda se pretende obter um nível razoável de compressão. Também acelera o compressor. Consulte mais detalhes específicos do MicroPython na documentação do módulo deflate.