我想通过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