zlib.inflate 与 zlib.deflate
最近在研究 png,其中有块数据需要用到 zlib.inflate 来解压数据块,一切都很正常,但昨天突然发现一个 buffer 进行 inflate 之后 deflate 得到的 居然不是之前的 buffer(好像丢失了数据),这是咋回事?求解答
buffer1: WechatIMG133.jpeg buffer2: WechatIMG134.jpeg
多次测试情况如下:
- buffer1 解压后和 buffer2 解压缩后的数据是相等的
- buffer1 解压后再压缩得到 buffer2
- buffer2 解压后再压缩得到 buffer2
- 压缩的options 当中 level 会改变压缩后的数据,当是怎么设置也得不到 buffer1
4 回复
测试后跟压缩参数没关系,压缩参数会写到压缩后的数据的开头
const zlib = require('zlib');
const buffer = Buffer.from('node js 中华人民共和国', 'utf8');
console.log("\nsource:\n",buffer);
let encode = zlib.deflateSync(buffer);
console.log("\nencode default:\n",encode);
encode = zlib.deflateSync(buffer, {
level: 9,
memLevel:5
});
console.log("\nencode default 9:\n",encode);
let decode = zlib.inflateSync(encode);
console.log(decode.toString());