zlib — compressione e decompressione zlib

Questo modulo consente la compressione e la decompressione di dati binari con l”algoritmo DEFLATE (comunemente usato nella libreria zlib e nell’archiviatore gzip).

Nota

È preferibile usare deflate.DeflateIO invece delle funzioni di questo modulo, poiché fornisce un’interfaccia di streaming alla compressione e decompressione, comoda e più efficiente in termini di memoria quando si lavora con la lettura o la scrittura di dati compressi su file, socket o stream.

Disponibilità:

  • Questo modulo non è incluso sulla OpenMV Cam per impostazione predefinita, in quanto duplica funzionalità già fornite dal modulo deflate.

  • È possibile installarne una copia (o congelarla in un firmware personalizzato) da micropython-lib (sorgente). Vedi Gestione dei pacchetti per ulteriori informazioni. Questa documentazione descrive quel modulo.

  • Si basa sul modulo integrato deflate, presente su tutte le OpenMV Cam.

  • La compressione è disponibile solo se la compressione è disponibile nel modulo integrato deflate – cioè non sulle OpenMV Cam basate su STM32 (vedi la sua nota sulla disponibilità sopra).

Funzioni

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

Decomprime data in un oggetto bytes.

Il parametro wbits funziona allo stesso modo che per zlib.compress(), con i seguenti valori validi aggiuntivi:

  • 0: Determina automaticamente la dimensione della finestra dall’intestazione zlib (data deve essere in formato zlib).

  • da 35 a 47: Rileva automaticamente il formato zlib o gzip.

Come per zlib.compress(), vedi la documentazione di CPython per zlib per ulteriori informazioni sul parametro wbits. Come per zlib.compress(), MicroPython supporta anche dimensioni di finestra più piccole rispetto a CPython. Vedi maggiori dettagli specifici di MicroPython nella documentazione del modulo deflate.

Se i dati da decomprimere richiedono una dimensione di finestra maggiore, la decompressione fallirà.

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

Comprime data in un oggetto bytes.

wbits consente di configurare la dimensione della finestra del dizionario DEFLATE e il formato di output. La dimensione della finestra permette di bilanciare l’uso della memoria con il livello di compressione. Una dimensione di finestra maggiore consente al compressore di fare riferimento a frammenti più indietro nell’input. I formati di output sono DEFLATE «raw» (senza intestazione/piè di pagina), zlib e gzip, dove gli ultimi due includono un’intestazione e un checksum.

I quattro bit meno significativi del valore assoluto di wbits impostano il logaritmo in base 2 della dimensione della finestra del dizionario DEFLATE. Quindi, ad esempio, wbits=10, wbits=-10 e wbits=26 impostano tutti la dimensione della finestra a 1024 byte. Le dimensioni di finestra valide sono da 5 a 15 inclusi (corrispondenti a 32 fino a 32k byte).

Valori negativi di wbits tra -5 e -15 corrispondono alla modalità di output «raw», valori positivi tra 5 e 15 corrispondono alla modalità di output zlib, e valori positivi tra 21 e 31 corrispondono alla modalità di output gzip.

Vedi la documentazione di CPython per zlib per ulteriori informazioni sul parametro wbits. Nota che MicroPython consente dimensioni di finestra più piccole, il che è utile quando la memoria è limitata pur ottenendo un livello di compressione ragionevole. Questo accelera anche il compressore. Vedi maggiori dettagli specifici di MicroPython nella documentazione del modulo deflate.