我想通過processingjs開發一個畫筆應用程序。 這個API有函數loadPixels(),它將RGB值加載到數組中。 現在我想將數組存儲在服務器數據庫中。Javascript客戶端數據壓縮
問題是數組的大小,當我轉換爲大小爲5 MB的字符串。
最好的解決方案是在javascript級別進行壓縮嗎?怎麼做?
我想通過processingjs開發一個畫筆應用程序。 這個API有函數loadPixels(),它將RGB值加載到數組中。 現在我想將數組存儲在服務器數據庫中。Javascript客戶端數據壓縮
問題是數組的大小,當我轉換爲大小爲5 MB的字符串。
最好的解決方案是在javascript級別進行壓縮嗎?怎麼做?
有關LZW壓縮示例,請參見http://rosettacode.org/wiki/LZW_compression#JavaScript。它適用於重複模式較長的字符串。
從Wikipedia article上LZW:
字典被初始化爲 單字符串對應於所有可能的 輸入字符 (而不是其他 ,除了透明的,如果 停止代碼他們正在使用)。算法 通過掃描輸入 字符串連續更長的 子串,直到找到一個不在字典中的 。當這樣的 串中發現,對於 串少的最後一個字符的索引(即, 即在 字典中的最長子串)從 詞典檢索併發送到輸出,並且 新的字符串(包括最後的 字符)被添加到詞典 與下一個可用的代碼。最後的 輸入字符然後用作 下一個起點以掃描 子字符串。
以這種方式,連續的較長 串被登記在詞典 和 後續編碼作爲單個輸出 值提供。該算法對 數據具有重複模式效果最佳,因此消息的起始部分將看到 很小的壓縮。然而,隨着消息 的增長,壓縮比率 傾向於漸近地達到最大值 。
JavaScript implementation of Gzip有幾個相關的答案。
另外,Javascript LZW和Huffman Coding with PHP and JavaScript是我找到的其他實現。
在我的情況下,這減少到33%的實際大小 – Soft 2010-02-12 15:08:33
@Soft,這很酷!很高興幫助。 – 2010-02-12 15:25:19
此實現在某些情況下不起作用。我編碼了大量的HTML,並且沒有正確解碼。保留返回null。改爲使用此實現:https://gist.github.com/revolunet/843889 – shrimpwagon 2013-07-12 18:17:08