IE8 中 data:uri 的 32KB 限制有任何解决方法吗?

Any workaround for the 32KB limit on data:uri in IE8?

我想通过单击 JavaScriptHTML img 元素中加载图片。 JavaScript 调用一个 ActiveX 函数并获得一个 BASE64 编码的字符串表示图像,然后将其放入 img src 中,如下所示:

var message = activex.GetImage(param);
var img = document.getElementById("imgPhoto").src = "data:image/jpeg;base64, ".concat(message);

问题是我在最近的 IE 中测试了它,向后兼容 IE8 并且它有效,但实际的 IE8data:uri 有 32KB 的限制,这意味着我的图片被截断了,只显示了 ~32KB。

解决方案:

  1. 我正在考虑将 BMP 转换为 JPEG,但我仍然不能保证它们不会超过限制。
  2. 我也见过 this 方法,其中图像是通过 CSSMHTML 中加载的,但我看不出如何重写 CSS 每次都归档。据我了解,JavaScript 无法真正将文件写入您的磁盘。

考虑到我的限制,有人设法克服了这个限制吗?

我建议完全避免使用 BMP - 改用 JPEG。您将获得更小的文件大小和更好的性能。更不用说,您经常会低于 32kb 的限制。在 32kb 仍然 不够用的情况下,通常情况下,您可以通过从图像文件本身。如果压缩和删除元数据后32kb仍然不够,我建议您再考虑一下数据URI是否合适。