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