2010-08-27 168 views
19

我需要向包含1920x1080 png的浏览器发送html响应。这是一个HTML查询截图。如何解决IE8 32k数据限制:uri上base64编码?

我对图像进行编码以base64并将其发送嵌入作为一个文本/ html内容类型。东西很简单,如:

<HTML><HEAD>Whatever</HEAD><BODY><img src="data:image/png;base64,data"/></BODY></HTML> 

它在FF和Chrome上运行良好,问题是我需要支持IE8。 IE8作为数据长度的限制:uri。

如果我压缩图像,从而使PNG编码是在32K(约广告600x500),我失去了太多的信息。

这个问题最简单的解决方法是什么? (我没有访问服务器来托管图像或此类)

+2

为什么要通过发送1920×1080的图像的任何具体原因'SRC =“数据:???' – NullUserException 2010-08-27 17:35:48

+0

什么是我的其他选项 – Martin 2010-08-27 17:44:08

+5

你并不需要支持IE7和IE6行运一条龙 – Gordon 2010-08-27 17:57:37

回答

4

你总是可以掰开图像为4(或以上),并进行单独编码每个部分。

+0

可以请你提供一个例子的链接,该怎么做? – Hemc 2012-12-21 09:01:53

+0

是@cobbal,你可以发表一个关于如何做的例子吗? – SexyBeast 2013-02-14 05:29:28

+2

我假设cobbal意味着你可以在彼此旁边显示4个图像,就像镶嵌图像一样,它将显示为一个大图像。这可以通过使用任何图像编辑器将源图像分割为4个,分别编码每个部分,然后使用CSS将它们分别放置在HTML中以正确定位它们来完成。 – 2013-08-10 22:06:13

0

你不能只是存储图像的地方,返回其路径,然后更改SRC的路径刚刚生成?

+0

不,我不能将图像存储到其他地方或使其路径可用于外部请求。 – Martin 2010-08-27 18:24:37

17

最后我们放弃了IE8的支持。

我很幸运,它是唯一的内部调试的目的。

虽然问题仍然存在。希望IE9不会有数据:uri限制。

+17

我最喜欢的解决方案的所有 – 2014-01-23 14:15:53

+0

我不能停止笑这个=))))))))))) – mhesabi 2017-06-19 07:45:01

+0

我不能放弃支持...我不能笑... u_u')和这个是2017! – 2017-06-26 09:09:26

0

Base64编码的数据URI在其版本大于或等于9的IE中正常工作。由于IE 9没有数据URI限制。我还尝试修复此IE 8问题。但我无法解决这个问题。对于解决方法,将图像存储在应用程序内的某个位置&无论何时显示,都可以从应用程序中将其恢复。

在Rails的观点:(支持如果IE> = 9)

<b><%= ('&lt;img src="data:image/jpg;base64,%s">' % Base64.encode64(@chart.to_blob)).html_safe %></b> 

在Rails的观点:(支持所有浏览器)

<b><%= image_tag @chart+".png" %></b>