【发布时间】:2023-03-27 19:02:01
【问题描述】:
我正在尝试找到一种方法来减小发送到服务器的 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
【问题讨论】:
-
有两个问题可能会导致该问题。 1. 如果您阅读了您提到的问题的已接受答案,您可以看到 LZMA JS 库正在创建一个有符号字节数组,而服务器正在使用一个无符号字节数组。 2.在base64编码之前图片是什么格式的,很多图片格式已经被压缩了,所以base64编码然后压缩结果字符串几乎肯定会增加数据的大小。
标签: javascript compression base64 lzma