Chrome/webkit中的本机javascript解压缩功能
如果发送的数据是base64编码和压缩的(例如,使用python的zlib.compress()),则可以使用本机Chrome函数window.atob()将base64转换为二进制数据。是否有类似的本机javascript函数来解压缩zlib压缩数据?有什么黑客可以做到这一点吗 我知道解压数据的代码已经在浏览器中,因为它可以接收带有gzip头的HTML 我不是在寻找一个javascript库来进行解压缩Chrome/webkit中的本机javascript解压缩功能,javascript,google-chrome,webkit,compression,Javascript,Google Chrome,Webkit,Compression,如果发送的数据是base64编码和压缩的(例如,使用python的zlib.compress()),则可以使用本机Chrome函数window.atob()将base64转换为二进制数据。是否有类似的本机javascript函数来解压缩zlib压缩数据?有什么黑客可以做到这一点吗 我知道解压数据的代码已经在浏览器中,因为它可以接收带有gzip头的HTML 我不是在寻找一个javascript库来进行解压缩 如果你在浏览器上找到一个解压方案,我可以将它压缩成那种格式进行传输。换句话说,任何解压例程
如果你在浏览器上找到一个解压方案,我可以将它压缩成那种格式进行传输。换句话说,任何解压例程都是可以接受的。试试。没有公开这样的函数。这里有一个技巧,可以将包含压缩数据的PNG绘制到
画布中,然后逐像素读取数据:。如果您想要使用浏览器的本机压缩库,这里有一个选项。不幸的是,您必须将ImageData
转换为javascript中的字符串。2020更新
Chrome 80+支持压缩流
和解压缩流
API
Gzip压缩流
const compressedReadableStream=inputReadableStream.pipeThrough(新的压缩流('gzip'));
压缩阵列缓冲器
函数compressArrayBuffer(输入){
const stream=新响应(输入).body
.管道通过(新压缩流(“放气”);
返回新响应(stream.arrayBuffer();
}
Gzip将Blob解压缩为Blob
这会将输入视为gzip文件,而不考虑mime类型。输出Blob的mime类型为空
异步函数解压缩blob(blob){
const ds=新的解压缩流('gzip');
const decompressedStream=blob.stream().pipeThrough(ds);
return等待新的响应(decompressedStream).blob();
}
也许您只是在寻找“btoa()”,但对于record base64编码,它不是压缩;事实上,它使数据更大。好吧,我想我不清楚。我不是在找btoa()。我知道。我说的是解压缩用LZ77或LZW或gzip或任何类似的压缩算法压缩的数据。这就是我所怀疑的:-)不幸的是,我不知道有哪种API会暴露这一点,但我不熟悉非标准浏览器的内部结构,尤其是Chrome。我不想寻找atob的反面。一个常见的com位置是获取数据,使用LZ77或类似算法压缩数据,对其进行base64编码,然后将其传输到客户端,客户端在客户端撤消base64编码,然后解压缩数据。撤销base64编码可以通过atob本机完成。什么本机函数(如果有的话)可以撤销压缩?好的,你怎么知道的?我怎样才能相信这一点呢?通过查看每个浏览器提供的公开的全局API,例如在JavaScript控制台中。链接已经消失:更新了带有archive.org的链接。就在我问这个问题9年后——很久以前,我不记得我为什么想要这个了。:-)