Modulo zlib
zlib è un modulo di compressione integrato che supporta più formati e modalità di compressione come gzip, deflate e zlib.
zlib consiste principalmente delle seguenti tre funzioni:
- sgonfiare: dati compressi;
- gonfiare: decomprimere i dati;
- gzip: formato di compressione gzip.
Prima di utilizzare zlib, devi sceglierne uno in base all'algoritmo di compressione che devi utilizzare. Puoi fare riferimento alle costanti di zlib per selezionare l'algoritmo di compressione corrispondente. Ad esempio, utilizziamo l'algoritmo di compressione deflate per la descrizione del modulo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15const zlib = require('zlib');
const {
NO_COMPRESSION,
BEST_SPEED,
BEST_COMPRESSION,
DEFAULT_COMPRESSION
} = require('zlib');
// compress data
const deflated = zlib.deflate('hello, world', BEST_SPEED);
console.log(deflated.toString());
// decompress data
const inflated = zlib.inflate(deflated);
console.log(inflated.toString());
Il codice precedente mostra come comprimere e decomprimere i dati. Per prima cosa utilizza zlib.deflate
il metodo per comprimere hello, world
la stringa e passala BEST_SPEED
come opzione del livello di compressione, quindi utilizza zlib.inflate
il metodo per decomprimere i dati. Il risultato di output dovrebbe essere lo stesso della stringa originale .
zlib.deflate
ed zlib.inflate
entrambi supportano la definizione del livello di compressione. Il livello di compressione è un numero con un intervallo di valori pari a [NO_COMPRESSION, BEST_SPEED, DEFAULT_COMPRESSION, BEST_COMPRESSION]
. Il valore predefinito è DEFAULT_COMPRESSION
. Per il significato di questi quattro livelli di compressione si può fare riferimento alla seguente tabella:
Livello di compressione | Senso |
---|---|
zlib.NO_COMPRESSION | Dati non compressi (con supporto per il completamento dell'intestazione di compressione) |
zlib.BEST_SPEED | La velocità di compressione più elevata; ma il rapporto di compressione è corrispondentemente peggiore. |
zlib.DEFAULT_COMPRESSION | Secondo il valore predefinito dell'algoritmo di compressione, solitamente è più lento di BEST_SPEED ma ha un tasso di compressione più elevato. |
zlib.BEST_COMPRESSION | Rapporto di compressione più elevato, ma velocità di compressione corrispondentemente più lenta. |
zlib
Ciò che è necessario notare quando si utilizza il modulo è che se si desidera comprimere e decomprimere i dati allo stesso tempo, si consiglia di utilizzarlo deflate
prima per comprimere i dati e poi di utilizzarlo inflate
per decomprimerli per evitare errori. Per diversi formati e algoritmi di compressione, esistono altre classi e metodi per la compressione e la decompressione. Per l'utilizzo è possibile fare riferimento ai seguenti documenti.
funzione statica
createDeflate
Crea un oggetto flusso sgonfio
1static Stream zlib.createDeflate(Stream to);
Parametri di chiamata:
- to:Stream, un flusso utilizzato per archiviare i risultati dell'elaborazione
Risultati restituiti:
- Stream, restituisce l'oggetto flusso incapsulato
createDeflateRaw
Crea un oggetto flusso deflateRaw
1static Stream zlib.createDeflateRaw(Stream to);
Parametri di chiamata:
- to:Stream, un flusso utilizzato per archiviare i risultati dell'elaborazione
Risultati restituiti:
- Stream, restituisce l'oggetto flusso incapsulato
createGunzip
Crea un oggetto flusso gunzip
1
2static Stream zlib.createGunzip(Stream to,
Integer maxSize = -1);
Parametri di chiamata:
- to:Stream, un flusso utilizzato per archiviare i risultati dell'elaborazione
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Risultati restituiti:
- Stream, restituisce l'oggetto flusso incapsulato
createGzip
Crea un oggetto flusso gzip
1static Stream zlib.createGzip(Stream to);
Parametri di chiamata:
- to:Stream, un flusso utilizzato per archiviare i risultati dell'elaborazione
Risultati restituiti:
- Stream, restituisce l'oggetto flusso incapsulato
createInflate
Crea un oggetto flusso di gonfiaggio
1
2static Stream zlib.createInflate(Stream to,
Integer maxSize = -1);
Parametri di chiamata:
- to:Stream, un flusso utilizzato per archiviare i risultati dell'elaborazione
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Risultati restituiti:
- Stream, restituisce l'oggetto flusso incapsulato
createInflateRaw
Crea un oggetto flusso inflateRaw
1
2static Stream zlib.createInflateRaw(Stream to,
Integer maxSize = -1);
Parametri di chiamata:
- to:Stream, un flusso utilizzato per archiviare i risultati dell'elaborazione
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Risultati restituiti:
- Stream, restituisce l'oggetto flusso incapsulato
deflate
Utilizza l'algoritmo di deflazione per comprimere i dati (formato zlib)
1
2static Buffer zlib.deflate(Buffer data,
Integer level = DEFAULT_COMPRESSION) async;
Parametri di chiamata:
- data:Buffer, dati i dati da comprimere
- level: Numero intero, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
Risultati restituiti:
- Buffer, restituisce dati binari compressi
deflateTo
Utilizza l'algoritmo di deflate per comprimere i dati in oggetti stream (formato zlib)
1
2
3static zlib.deflateTo(Buffer data,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parametri di chiamata:
- data:Buffer, dati i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
- level: Numero intero, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
Utilizza l'algoritmo di deflazione per comprimere i dati nel flusso di origine in un oggetto flusso (formato zlib)
1
2
3static zlib.deflateTo(Stream src,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui si trovano i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
- level: Numero intero, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
inflate
Decomprimere i dati compressi dall'algoritmo di deflate (formato zlib)
1
2static Buffer zlib.inflate(Buffer data,
Integer maxSize = -1) async;
Parametri di chiamata:
- data:Buffer, dati i dati compressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Risultati restituiti:
- Buffer, restituisce i dati binari decompressi
inflateTo
Decomprimere i dati compressi dall'algoritmo di deflate in un oggetto stream (formato zlib)
1
2
3static zlib.inflateTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Parametri di chiamata:
- data:Buffer, dati i dati da decomprimere
- stm:Stream, specificare il flusso in cui archiviare i dati decompressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Decomprimere i dati compressi dall'algoritmo di deflazione nel flusso di origine in un oggetto flusso (formato zlib)
1
2
3static zlib.inflateTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui si trovano i dati da decomprimere
- stm:Stream, specificare il flusso in cui archiviare i dati decompressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
gzip
Comprimi i dati utilizzando l'algoritmo gzip
1static Buffer zlib.gzip(Buffer data) async;
Parametri di chiamata:
- data:Buffer, dati i dati da comprimere
Risultati restituiti:
- Buffer, restituisce dati binari compressi
gzipTo
Utilizza l'algoritmo gzip per comprimere i dati in un oggetto stream
1
2static zlib.gzipTo(Buffer data,
Stream stm) async;
Parametri di chiamata:
- data:Buffer, dati i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
Utilizza l'algoritmo gzip per comprimere i dati nel flusso di origine in un oggetto flusso.
1
2static zlib.gzipTo(Stream src,
Stream stm) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui si trovano i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
gunzip
Decomprime i dati compressi dall'algoritmo gzip
1
2static Buffer zlib.gunzip(Buffer data,
Integer maxSize = -1) async;
Parametri di chiamata:
- data:Buffer, dati i dati compressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Risultati restituiti:
- Buffer, restituisce i dati binari decompressi
gunzipTo
Decomprime i dati compressi dall'algoritmo gzip in un oggetto stream
1
2
3static zlib.gunzipTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Parametri di chiamata:
- data:Buffer, dati i dati da decomprimere
- stm:Stream, specificare il flusso in cui archiviare i dati decompressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Decomprimere i dati compressi dall'algoritmo gzip nel flusso di origine in un oggetto flusso
1
2
3static zlib.gunzipTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui si trovano i dati da decomprimere
- stm:Stream, specificare il flusso in cui archiviare i dati decompressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
deflateRaw
Comprimere i dati utilizzando l'algoritmo di deflate (deflateRaw)
1
2static Buffer zlib.deflateRaw(Buffer data,
Integer level = DEFAULT_COMPRESSION) async;
Parametri di chiamata:
- data:Buffer, dati i dati da comprimere
- level: Numero intero, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
Risultati restituiti:
- Buffer, restituisce dati binari compressi
deflateRawTo
Utilizza l'algoritmo di deflazione per comprimere i dati in oggetti di flusso (deflateRaw)
1
2
3static zlib.deflateRawTo(Buffer data,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parametri di chiamata:
- data:Buffer, dati i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
- level: Numero intero, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
Utilizza l'algoritmo di deflazione per comprimere i dati nel flusso di origine in un oggetto flusso (deflateRaw)
1
2
3static zlib.deflateRawTo(Stream src,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui si trovano i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
- level: Numero intero, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
inflateRaw
Decomprimere i dati compressi dall'algoritmo di deflate (inflateRaw)
1
2static Buffer zlib.inflateRaw(Buffer data,
Integer maxSize = -1) async;
Parametri di chiamata:
- data:Buffer, dati i dati compressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Risultati restituiti:
- Buffer, restituisce i dati binari decompressi
inflateRawTo
Decomprimere i dati compressi dall'algoritmo deflate in un oggetto flusso (inflateRaw)
1
2
3static zlib.inflateRawTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Parametri di chiamata:
- data:Buffer, dati i dati da decomprimere
- stm:Stream, specificare il flusso in cui archiviare i dati decompressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
Decomprimere i dati compressi dall'algoritmo deflate nel flusso di origine in un oggetto flusso (inflateRaw)
1
2
3static zlib.inflateRawTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui si trovano i dati da decomprimere
- stm:Stream, specificare il flusso in cui archiviare i dati decompressi
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
costante
NO_COMPRESSION
ridurre il livello di compressione, non impostare alcuna compressione
1const zlib.NO_COMPRESSION = 0;
BEST_SPEED
sgonfiare il livello di compressione, impostare la compressione più veloce
1const zlib.BEST_SPEED = 1;
BEST_COMPRESSION
sgonfiare il livello di compressione, impostare la compressione più alta
1const zlib.BEST_COMPRESSION = 9;
DEFAULT_COMPRESSION
sgonfiare il livello di compressione, impostare le impostazioni predefinite
1const zlib.DEFAULT_COMPRESSION = -1;