modulo zlib
zlib è un modulo di compressione integrato che supporta vari formati e modalità di compressione come gzip, deflate e zlib
zlib consiste principalmente delle seguenti tre funzioni:
- deflate: dati compressi;
- gonfiare: decomprimere i dati;
- gzip: formato di compressione gzip.
Prima di utilizzare zlib, è necessario sceglierne uno in base all'algoritmo di compressione che si desidera utilizzare. È possibile fare riferimento alle costanti di zlib per selezionare l'algoritmo di compressione corrispondente. Ad esempio, utilizziamo l'algoritmo di compressione deflate per le dichiarazioni dei moduli:
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, utilizzare prima zlib.deflate
il metodo per comprimere hello, world
la stringa e passarlo BEST_SPEED
come opzione del livello di compressione, quindi utilizzare zlib.inflate
il metodo per decomprimere i dati, il risultato dell'output dovrebbe essere lo stesso dell'originale corda.
zlib.deflate
zlib.inflate
Entrambi supportano la definizione del livello di compressione, il livello di compressione è un numero, l'intervallo di valori è [NO_COMPRESSION, BEST_SPEED, DEFAULT_COMPRESSION, BEST_COMPRESSION]
e il valore predefinito è DEFAULT_COMPRESSION
. Per il significato di questi 4 livelli di compressione si può fare riferimento alla seguente tabella:
Livello di compressione | Senso |
---|---|
zlib.NO_COMPRESSION | Dati non compressi (supporto completo con intestazioni di compressione) |
zlib.BEST_SPEED | La velocità di compressione più veloce; ma il rapporto di compressione è corrispondentemente peggiore |
zlib.DEFAULT_COMPRESSION | In base al valore predefinito dell'algoritmo di compressione, di solito la velocità di compressione è inferiore a BEST_SPEED ma la velocità di compressione è superiore |
zlib.BEST_COMPRESSION | Rapporto di compressione più alto, ma velocità di compressione corrispondentemente più lenta. |
Quando si utilizza zlib
il modulo , va notato che se si desidera comprimere e decomprimere i dati contemporaneamente, si consiglia di utilizzare deflate
prima per comprimere i dati e quindi utilizzare inflate
per decomprimere i dati per evitare errori. Per diversi formati e algoritmi di compressione, esistono altre classi e metodi per la compressione e la decompressione, che possono essere utilizzati facendo riferimento ai seguenti documenti.
funzione statica
createDeflate
Crea un oggetto flusso deflate
1static Stream zlib.createDeflate(Stream to);
Parametri di chiamata:
- to:Stream, un flusso per l'archiviazione dei risultati dell'elaborazione
risultato di ritorno:
- 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 per l'archiviazione dei risultati dell'elaborazione
risultato di ritorno:
- 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 per l'archiviazione dei risultati dell'elaborazione
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
risultato di ritorno:
- 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 per l'archiviazione dei risultati dell'elaborazione
risultato di ritorno:
- Stream, restituisce l'oggetto flusso incapsulato
createInflate
Crea un oggetto flusso di espansione
1
2static Stream zlib.createInflate(Stream to,
Integer maxSize = -1);
Parametri di chiamata:
- to:Stream, un flusso per l'archiviazione dei risultati dell'elaborazione
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
risultato di ritorno:
- 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 per l'archiviazione dei risultati dell'elaborazione
- maxSize: Numero intero, specifica il limite della dimensione di decompressione, il valore predefinito è -1, nessun limite
risultato di ritorno:
- Stream, restituisce l'oggetto flusso incapsulato
deflate
Comprimi i dati utilizzando l'algoritmo deflate (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: Integer, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
risultato di ritorno:
- Buffer, restituisce dati binari compressi
deflateTo
Utilizzare l'algoritmo 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: Integer, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
Utilizzare l'algoritmo deflate per comprimere i dati nel flusso di origine nell'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 risiedono i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
- level: Integer, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
inflate
Decomprimere i dati compressi dall'algoritmo 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
risultato di ritorno:
- Buffer, restituisce i dati binari decompressi
inflateTo
Decomprimere i dati compressi dall'algoritmo 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, specifica 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 nell'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 risiedono i dati da decomprimere
- stm:Stream, specifica 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
risultato di ritorno:
- Buffer, restituisce dati binari compressi
gzipTo
Comprimi i dati in un oggetto flusso utilizzando l'algoritmo gzip
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
Comprimere i dati nel flusso di origine nell'oggetto flusso utilizzando l'algoritmo gzip
1
2static zlib.gzipTo(Stream src,
Stream stm) async;
Parametri di chiamata:
- src:Stream, dato il flusso in cui risiedono 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
risultato di ritorno:
- 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, specifica 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 nell'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 risiedono i dati da decomprimere
- stm:Stream, specifica 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
Comprimi i dati utilizzando l'algoritmo 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: Integer, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
risultato di ritorno:
- Buffer, restituisce dati binari compressi
deflateRawTo
Utilizzare l'algoritmo deflate per comprimere i dati in oggetti stream (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: Integer, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
Utilizzare l'algoritmo deflate per comprimere i dati nel flusso di origine nell'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 risiedono i dati da comprimere
- stm:Stream, specifica il flusso in cui archiviare i dati compressi
- level: Integer, specifica il livello di compressione, il valore predefinito è DEFAULT_COMPRESSION
inflateRaw
Decomprimere i dati compressi dall'algoritmo 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
risultato di ritorno:
- Buffer, restituisce i dati binari decompressi
inflateRawTo
Decomprimere i dati compressi dall'algoritmo deflate nell'oggetto stream (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, specifica 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 nell'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 risiedono i dati da decomprimere
- stm:Stream, specifica 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
sgonfiare il livello di compressione, non impostare alcuna compressione
1const zlib.NO_COMPRESSION = 0;
BEST_SPEED
deflate il livello di compressione, imposta la compressione più veloce
1const zlib.BEST_SPEED = 1;
BEST_COMPRESSION
sgonfia il livello di compressione, imposta la compressione più alta
1const zlib.BEST_COMPRESSION = 9;
DEFAULT_COMPRESSION
sgonfiare il livello di compressione, impostare l'impostazione predefinita
1const zlib.DEFAULT_COMPRESSION = -1;