私はサーバーに送るBASE64エンコードされたイメージのサイズを減らす方法を見つけようとしています。私はLZMAが提案された解決策であるところでquestionを見つけました。しかし、サーバー上のリクエストサイズを調べると、圧縮されていないバージョンのサイズは〜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
問題を引き起こしている2つの問題があります。 1.上記の質問に対する受け入れられた答えを読むと、LZMA JSライブラリが符号付きバイト配列を作成しており、サーバが符号なしのものを使用していることがわかります。 2. base64でエンコードする前のイメージの形式は、イメージの形式が多く圧縮されているため、base64でエンコードしてから結果の文字列を圧縮するとほぼ確実にデータのサイズが大きくなります。 – Harry