zlib.inflate 与 zlib.deflate
最近在研究 png,其中有块数据需要用到 zlib.inflate 来解压数据块,一切都很正常,但昨天突然发现一个 buffer 进行 inflate 之后 deflate 得到的 居然不是之前的 buffer(好像丢失了数据),这是咋回事?求解答
buffer1: buffer2:
多次测试情况如下:
- buffer1 解压后和 buffer2 解压缩后的数据是相等的
- buffer1 解压后再压缩得到 buffer2
- buffer2 解压后再压缩得到 buffer2
- 压缩的options 当中 level 会改变压缩后的数据,当是怎么设置也得不到 buffer1
4 回复
inflate 和 deflate 反过来试下, deflate 在前, inflate 在后
@ziliwesley 我的数据源本来就是从PNG里取到的压缩数据,感觉和压缩参数有关系。
说明原本的png文件不是用默认设置压缩的,可以用这个deflate压缩后的png与原图对比,应该是相同的
测试后跟压缩参数没关系,压缩参数会写到压缩后的数据的开头
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());