2010-08-27 169 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>