0
我正试图找到一种方法来减少我发送到服务器的BASE64编码图像的大小。我发现question其中LZMA是建议的解决方案。但是,当我检查服务器上的请求大小时,我发现未压缩版本的大小是〜10倍。我错过了一步吗?我看到压缩的结果是Byte Array
我试图使用.toString('utf8')
方法,但它似乎只是加入数组。为什么由LZMA-JS压缩的字符串大小约为。比压缩前大10倍
/* 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对它们进行编码,然后压缩生成的字符串几乎肯定会增加数据的大小。 – Harry