gpt4 book ai didi

javascript - 为什么 LZMA-JS 压缩的字符串大小约为比压缩前大 10 倍

转载 作者:行者123 更新时间:2023-11-30 16:11:06 25 4
gpt4 key购买 nike

我正在尝试找到一种方法来减小我发送到服务器的 BASE64 编码图像的大小。我发现 question其中 LZMA 是建议的解决方案。但是,当我检查服务器上的请求大小时,我发现未压缩版本的大小小了约 10 倍。我错过了一步吗?我看到压缩的结果是一个 Byte Array 我尝试使用 .toString('utf8') 方法,但它似乎只是加入了数组。

/* LZMA COMPRESS / DECOMPRESS */
.factory('ooLZMA', ['CONFIG', function (CONFIG) {
return {
compress: function (string) {
return LZMA.compress(string, CONFIG.stringCompression);
},
decompress: function () {
return LZMA.decompress(string);
}
}
}])

在服务器上:

console.log('size', req.headers['content-length'] / 1048576, 'comp', req.body.compressed);

//"compressed"
size 0.1276998519897461 comp true
//raw BASE64
size 0.01657390594482422 comp false

最佳答案

这是由于格式转换。如果您发送 BASE64 编码,它已经是一个字符串,并且按原样发送到服务器。而是在实际请求之前将数组转换为字符串。如果您的数据不能压缩太多,压缩后的数据将具有相似的大小,但字符串转换操作会增加它,因为每个数字的平均长度为 10/12 个字符。

如果您使用的是 jquery,我认为这是发布数据的正确方式。

Sending binary data in javascript over HTTP

通过设置实际内容类型“application/octet-stream”并避免预处理/转换。

关于javascript - 为什么 LZMA-JS 压缩的字符串大小约为比压缩前大 10 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com