.Net Data URI - 加快小圖示傳輸 .Net Data URI - 加快小圖示傳輸
  .NET       ez      2012-09-06

假如有一張小圖要嵌入頁面,會用下列語法: <img src="xxx.jpg">

如果使用 Data URI 就會變為: <img src="data:image/jpg;base64,..................">  

當頁面為 html + img 就等於需要兩次 Request,如果改用 Data URI 僅需傳送 html 一次 Request,所以可以達到載入加快的效果。

※但如果圖片有快取,第二次載入反而不會比較快,使用上請自行斟酌。

C#直接將圖片載入成 Data URI:

protected string GetDataURL(string imgFile)
{
            return "<img src=\"data:image/"
                    + Path.GetExtension(imgFile).Substring(1)
                    + ";base64,"
                    + Convert.ToBase64String(File.ReadAllBytes(imgFile)) + "\" />";
}

頁面上只需將img改為

<%=GetDataURL(Server.MapPath("~/temp.jpg"))%>

※Data URI 僅適用於 IE8含以上  

接下來介紹要如何將 Data URI 轉回檔案。 例如接收到的URL為:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..../>

首先將src取出,變數取名為 str,並且將檔案儲存為 a.png:

File.WriteAllBytes(Server.MapPath("a.png"), Convert.FromBase64String(str.Substring(str.IndexOf(",") + 1)));

標籤:   .NET

我要留言