Canvas作为字符串使用最大压缩
Canvas as string with maximum compression?
我有一个PNG图像,并得到它的Base64 PNG字符串表示。它仍然相当大,我想知道它是否可以显著进一步压缩。这可能吗?
的背景我使用html2canvas创建当前网页的屏幕截图,将其转换为base64(使用canvas.toDataURL())字符串并将其发送到服务器。但是如果字符串太大,服务器返回一个异常。
将画布压缩成字符串形式的最有效方法是什么?
非常感谢任何帮助。
如果您希望压缩字符串,我建议使用压缩库,例如在客户端使用http://rosettacode.org/wiki/LZW_compression#JavaScript进行压缩,在服务器端使用http://webdevwonders.com/lzw-compression-and-decompression-with-javascript-and-php/进行解压(假设您使用php)。这种方法的优点是可以同时在客户端和服务器端工作,并且使用了备受推崇的LZW算法。
请记住,在大多数情况下,压缩将使用字典或其他方法来压缩数据。如果不能很好地压缩基本字符串,这将考虑更大的压缩数据。你必须找到一个图片的大小,这将导致一个较小的尺寸后压缩!
也许另一种方法会有帮助。如果你只发送URL,服务器不能为你做html2canvas吗?你能把数据分成更小的缓冲区,然后试着发送它们吗?也许你应该遍历你的数据大小,把它分成64 KB的缓冲区并传输它们(记住你需要在服务器端验证哪个缓冲区属于哪个数据包)。
否则尝试GZIP, LZW, LZMA算法。也许你也可以使用一个工具来压缩html2canvas创建的图像?
你可能无法从这里到达那里。您可能需要找到另一种方法来获取图像,而不是尝试将其塞进URL。
对于较小的增益,您可以尝试pingcrush使PNG图像变小,或者更猛烈地通过降低分辨率和/或颜色数量直接减小PNG图像的大小。
您还可以使用与Base64不同的编码方案,通过使用超过64个编码字符来挤出更多的字符。您可以使用66个非保留字符,另外,根据URL的语法,您可能会使用18个保留字符中的许多字符。
但是除了改变图像本身之外,您只能实现很小的收益。
- 用有限的字符集压缩字符串,然后在JS中解压缩
- 在树枝模板上从数据库中解压缩HTML字符串
- 使用JavaScript将压缩文本文件加载到字符串中
- 在C#中压缩字符串,然后在JavaScript中解压缩
- 使用 javascript 压缩包含嵌入图像的 HTML 字符串
- 谷歌闭包编译器不压缩字符串值
- 在JavaScript/NodeJS中压缩十六进制字符串
- 长字母strjng到短字符串压缩
- URL 哈希参数的 JavaScript 字符串压缩
- 为什么LZMA-JS压缩的字符串的大小比压缩前大大约10倍
- 使用 JavaScript 编码和压缩字符串
- 通过替换常用字符串来压缩 JSON
- 字符串中包含的大型基数 10 的数字的最佳压缩
- 如何在用户脚本中压缩/解压缩字符串
- 解压缩后如何取回原始字符串 - Zlib
- 压缩 JSON 字符串?(以及一般的字符串)
- 在node.js和javascript客户端中压缩/解压缩字符串
- Python zlib gzip解压缩失败,在客户端通过pako压缩字符串
- 压缩字符串
- PHP&JS函数压缩字符串(表单输入)