时间:2015-03-01 11:40:58

标签: javascript html image base64 gzip

它可能更像是一个理论问题但仍然存在。

使用内联base64数据在图像源参数中传递它非常简单。我们这样做:<img src="data:image/png;base64,[base64 string]" />

但是如果这个base64字符串中表示的数据被gzip压缩怎么办?有没有办法告诉浏览器呢?通过添加Content-Encoding: gzip标头从HTTP服务器加载图像时,可以简单地完成此操作。但使用内联方法是否可行?

我无法找到有关此内容的任何信息。我看到的唯一解决方案是使用JavaScript来解析&#34; unbase64&#34;数据,&#34; gunzip&#34;它然后&#34; base64&#34;再次将其添加到src属性中。

但它似乎不是一个好的解决方案......

2 个答案:

答案 0 :(得分:0)

浏览器支持传输级别的gzip编码(即在HTTP中)。他们在数据层面没有任何支持。

如果你要提供一个base64 sting的gzip压缩数据,那么它image/png就不会application/x-gzip而且浏览器无法处理它,因为它会尝试将其解码为图像。

如果您这样做但使用正确的MIME类型,那么浏览器仍然不知道如何处理它,因为它不是图像格式,并且不支持解码gzip数据,然后猜测里面的数据是什么格式。

  

但是当我们使用内联base64数据时,我们没有标题。

数据必须来自某个地方。它通常嵌入在HTML文档中(在这种情况下,整个文档可以在通过HTTP发送时进行压缩)或从JavaScript本地生成(在这种情况下压缩它只是为了立即解压缩它,那里&# 39;没有网络发送它,因此压缩不会带来任何性能提升)。

答案 1 :(得分:-2)

“如果你提供了一个base64 sting的gzip压缩数据,那么它就不会是image / png它将是application / x-gzip”

因此?

一旦检测到文件已完成解压缩,并在javascript中,修复标题以便它理解数据,最终你最终会得到img src = data:blah blah

我不知道为什么我们仍然担心7位和EBCDIC链接。这是无稽之谈,image:data / png; gzip,...应该工作,这不是火箭科学。

删除单词“gzip”并替换为gzip压缩的字符串。

有人骚扰vivaldi人,他们总是把东西放在第一位。