Módulo zlib
zlib é un módulo de compresión integrado que admite varios formatos e modos de compresión como gzip, deflate e zlib.
zlib consta principalmente das seguintes tres funcións:
- desinflar: datos comprimidos;
- inflar: descomprimir datos;
- gzip: formato de compresión gzip.
Antes de usar zlib, cómpre escoller un deles segundo o algoritmo de compresión que necesitas usar. Podes consultar as constantes de zlib para seleccionar o algoritmo de compresión correspondente. Por exemplo, usamos o algoritmo de compresión desinflado para a descrición do módulo:
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());
O código anterior mostra como comprimir e descomprimir os datos. Primeiro utiliza zlib.deflate
o método para comprimir hello, world
a cadea, pasa BEST_SPEED
como opción de nivel de compresión e despois usa zlib.inflate
o método para descomprimir os datos. O resultado de saída debe ser o mesmo que a cadea orixinal. .
zlib.deflate
e zlib.inflate
ambos admiten definir o nivel de compresión. O nivel de compresión é un número cun intervalo de valores de [NO_COMPRESSION, BEST_SPEED, DEFAULT_COMPRESSION, BEST_COMPRESSION]
. O valor predeterminado é DEFAULT_COMPRESSION
. Para coñecer o significado destes catro niveis de compresión, podes consultar a seguinte táboa:
Nivel de compresión | Significado |
---|---|
zlib.NO_COMPRESSION | Datos sen comprimir (con soporte para completar o encabezado de compresión) |
zlib.BEST_SPEED | A velocidade de compresión máis rápida, pero a relación de compresión é, en consecuencia, peor. |
zlib.DEFAULT_COMPRESSION | Segundo o valor predeterminado do algoritmo de compresión, adoita ser máis lento que BEST_SPEED pero ten unha taxa de compresión máis alta. |
zlib.BEST_COMPRESSION | Relación de compresión máis alta, pero a velocidade de compresión correspondentemente máis lenta. |
zlib
O que hai que ter en conta ao usar o módulo é que se quere comprimir e descomprimir datos ao mesmo tempo, recoméndase usalo deflate
para comprimir os datos primeiro e despois utilizalo inflate
para descomprimir os datos para evitar erros. Para os diferentes formatos e algoritmos de compresión, hai outras clases e métodos de compresión e descompresión. Podes consultar os seguintes documentos para usar.
función estática
createDeflate
Crea un obxecto de fluxo desinflado
1static Stream zlib.createDeflate(Stream to);
Parámetros de chamada:
- to:Stream, un fluxo utilizado para almacenar os resultados do procesamento
Resultados de devolución:
- Stream, devolve o obxecto de fluxo encapsulado
createDeflateRaw
Crea un obxecto de fluxo deflateRaw
1static Stream zlib.createDeflateRaw(Stream to);
Parámetros de chamada:
- to:Stream, un fluxo utilizado para almacenar os resultados do procesamento
Resultados de devolución:
- Stream, devolve o obxecto de fluxo encapsulado
createGunzip
Crea un obxecto de fluxo gunzip
1
2static Stream zlib.createGunzip(Stream to,
Integer maxSize = -1);
Parámetros de chamada:
- to:Stream, un fluxo utilizado para almacenar os resultados do procesamento
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Resultados de devolución:
- Stream, devolve o obxecto de fluxo encapsulado
createGzip
Crea un obxecto de fluxo gzip
1static Stream zlib.createGzip(Stream to);
Parámetros de chamada:
- to:Stream, un fluxo utilizado para almacenar os resultados do procesamento
Resultados de devolución:
- Stream, devolve o obxecto de fluxo encapsulado
createInflate
Crea un obxecto de fluxo inflado
1
2static Stream zlib.createInflate(Stream to,
Integer maxSize = -1);
Parámetros de chamada:
- to:Stream, un fluxo utilizado para almacenar os resultados do procesamento
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Resultados de devolución:
- Stream, devolve o obxecto de fluxo encapsulado
createInflateRaw
Crea un obxecto de fluxo inflateRaw
1
2static Stream zlib.createInflateRaw(Stream to,
Integer maxSize = -1);
Parámetros de chamada:
- to:Stream, un fluxo utilizado para almacenar os resultados do procesamento
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Resultados de devolución:
- Stream, devolve o obxecto de fluxo encapsulado
deflate
Usa o algoritmo de desinflación para comprimir datos (formato zlib)
1
2static Buffer zlib.deflate(Buffer data,
Integer level = DEFAULT_COMPRESSION) async;
Parámetros de chamada:
- data:Buffer, dados os datos a comprimir
- level: Enteiro, especifica o nivel de compresión, o valor predeterminado é DEFAULT_COMPRESSION
Resultados de devolución:
- Buffer, devolve datos binarios comprimidos
deflateTo
Usa o algoritmo de desinflado para comprimir datos en obxectos de fluxo (formato zlib)
1
2
3static zlib.deflateTo(Buffer data,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parámetros de chamada:
- data:Buffer, dados os datos a comprimir
- stm:Stream, especifica o fluxo para almacenar datos comprimidos
- level: Enteiro, especifica o nivel de compresión, o valor predeterminado é DEFAULT_COMPRESSION
Use o algoritmo de desinflado para comprimir os datos do fluxo de orixe nun obxecto de fluxo (formato zlib)
1
2
3static zlib.deflateTo(Stream src,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parámetros de chamada:
- src:Stream, dado o fluxo no que se atopan os datos a comprimir
- stm:Stream, especifica o fluxo para almacenar datos comprimidos
- level: Enteiro, especifica o nivel de compresión, o valor predeterminado é DEFAULT_COMPRESSION
inflate
Descomprimir datos comprimidos mediante un algoritmo de desinflado (formato zlib)
1
2static Buffer zlib.inflate(Buffer data,
Integer maxSize = -1) async;
Parámetros de chamada:
- data:Buffer, dados os datos comprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Resultados de devolución:
- Buffer, devolve os datos binarios descomprimidos
inflateTo
Descomprimir os datos comprimidos polo algoritmo de desinflado nun obxecto de fluxo (formato zlib)
1
2
3static zlib.inflateTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Parámetros de chamada:
- data:Buffer, dados os datos a descomprimir
- stm:Stream, especifique o fluxo para almacenar os datos descomprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Descomprime os datos comprimidos polo algoritmo de desinflado no fluxo de orixe nun obxecto de fluxo (formato zlib)
1
2
3static zlib.inflateTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Parámetros de chamada:
- src:Stream, dado o fluxo no que se atopan os datos a descomprimir
- stm:Stream, especifique o fluxo para almacenar os datos descomprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
gzip
Comprimir datos usando o algoritmo gzip
1static Buffer zlib.gzip(Buffer data) async;
Parámetros de chamada:
- data:Buffer, dados os datos a comprimir
Resultados de devolución:
- Buffer, devolve datos binarios comprimidos
gzipTo
Use o algoritmo gzip para comprimir datos nun obxecto de fluxo
1
2static zlib.gzipTo(Buffer data,
Stream stm) async;
Parámetros de chamada:
- data:Buffer, dados os datos a comprimir
- stm:Stream, especifica o fluxo para almacenar datos comprimidos
Use o algoritmo gzip para comprimir os datos do fluxo de orixe nun obxecto de fluxo.
1
2static zlib.gzipTo(Stream src,
Stream stm) async;
Parámetros de chamada:
- src:Stream, dado o fluxo no que se atopan os datos a comprimir
- stm:Stream, especifica o fluxo para almacenar datos comprimidos
gunzip
Descomprime os datos comprimidos polo algoritmo gzip
1
2static Buffer zlib.gunzip(Buffer data,
Integer maxSize = -1) async;
Parámetros de chamada:
- data:Buffer, dados os datos comprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Resultados de devolución:
- Buffer, devolve os datos binarios descomprimidos
gunzipTo
Descomprime os datos comprimidos co algoritmo gzip nun obxecto de fluxo
1
2
3static zlib.gunzipTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Parámetros de chamada:
- data:Buffer, dados os datos a descomprimir
- stm:Stream, especifique o fluxo para almacenar os datos descomprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Descomprime os datos comprimidos polo algoritmo gzip no fluxo de orixe nun obxecto de fluxo
1
2
3static zlib.gunzipTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Parámetros de chamada:
- src:Stream, dado o fluxo no que se atopan os datos a descomprimir
- stm:Stream, especifique o fluxo para almacenar os datos descomprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
deflateRaw
Comprimir datos usando o algoritmo de deflación (deflateRaw)
1
2static Buffer zlib.deflateRaw(Buffer data,
Integer level = DEFAULT_COMPRESSION) async;
Parámetros de chamada:
- data:Buffer, dados os datos a comprimir
- level: Enteiro, especifica o nivel de compresión, o valor predeterminado é DEFAULT_COMPRESSION
Resultados de devolución:
- Buffer, devolve datos binarios comprimidos
deflateRawTo
Usa o algoritmo de deflación para comprimir datos en obxectos de fluxo (deflateRaw)
1
2
3static zlib.deflateRawTo(Buffer data,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parámetros de chamada:
- data:Buffer, dados os datos a comprimir
- stm:Stream, especifica o fluxo para almacenar datos comprimidos
- level: Enteiro, especifica o nivel de compresión, o valor predeterminado é DEFAULT_COMPRESSION
Use o algoritmo de deflación para comprimir os datos do fluxo de orixe nun obxecto de fluxo (deflateRaw)
1
2
3static zlib.deflateRawTo(Stream src,
Stream stm,
Integer level = DEFAULT_COMPRESSION) async;
Parámetros de chamada:
- src:Stream, dado o fluxo no que se atopan os datos a comprimir
- stm:Stream, especifica o fluxo para almacenar datos comprimidos
- level: Enteiro, especifica o nivel de compresión, o valor predeterminado é DEFAULT_COMPRESSION
inflateRaw
Descomprimir datos comprimidos polo algoritmo de desinflado (inflateRaw)
1
2static Buffer zlib.inflateRaw(Buffer data,
Integer maxSize = -1) async;
Parámetros de chamada:
- data:Buffer, dados os datos comprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Resultados de devolución:
- Buffer, devolve os datos binarios descomprimidos
inflateRawTo
Descomprime os datos comprimidos polo algoritmo de desinflado nun obxecto de fluxo (inflateRaw)
1
2
3static zlib.inflateRawTo(Buffer data,
Stream stm,
Integer maxSize = -1) async;
Parámetros de chamada:
- data:Buffer, dados os datos a descomprimir
- stm:Stream, especifique o fluxo para almacenar os datos descomprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
Descomprime os datos comprimidos polo algoritmo de desinflado no fluxo de orixe nun obxecto de fluxo (inflateRaw)
1
2
3static zlib.inflateRawTo(Stream src,
Stream stm,
Integer maxSize = -1) async;
Parámetros de chamada:
- src:Stream, dado o fluxo no que se atopan os datos a descomprimir
- stm:Stream, especifique o fluxo para almacenar os datos descomprimidos
- maxSize: Número enteiro, especifica o límite de tamaño de descompresión, o valor predeterminado é -1, sen límite
constante
NO_COMPRESSION
desinflar o nivel de compresión, non establecer compresión
1const zlib.NO_COMPRESSION = 0;
BEST_SPEED
desinflar o nivel de compresión, establecer a compresión máis rápida
1const zlib.BEST_SPEED = 1;
BEST_COMPRESSION
desinflar o nivel de compresión, establecer a compresión máis alta
1const zlib.BEST_COMPRESSION = 9;
DEFAULT_COMPRESSION
desinflar o nivel de compresión, establecer a configuración predeterminada
1const zlib.DEFAULT_COMPRESSION = -1;