Friday, January 21, 2011

[C#] Binary to Image 將二進位值轉回圖片

今天有人問我一個需求,他要將SQL Server中儲存的Image data type資料取出後,顯示回圖片,以前做類似的需求都是在產生認證圖片時做的,兩者之間蠻類似的,只差在圖片資料來源不同,所以拿之前的經驗來用就好。

MSSQL中的image資料型別是 0 ~ 2^31-1 (2,147,483,647) bytes的binary data,我懶得弄一個DB去拉資料,所以拉了之前去西門町吃排骨酥湯時拍的照片來當Source,然後設好網頁的ContentType後吐出來。

語法如下,我是寫在ASP.NET MVC下,不過基本上沒差啦。
public class YooooController : Controller
{
        public void Img()
        {
            System.Net.WebClient wc = new System.Net.WebClient();
            byte[] data = wc.DownloadData("http://farm6.static.flickr.com/5010/5352949971_1938f31b9e.jpg");
            Response.ContentType = "Image/jpg";
            Response.OutputStream.Write(data, 0, data.Length);
            Response.OutputStream.Flush();
            Response.End();
        }
}

這是在Yoooo Controller下的Img Action,所以要讀這張圖的時候就用一般的img標籤,只是src指到這個Action。


@{
    ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
    <img src="/yoooo/img" />

最後的結果就直接跑出一張圖啦


Byte2Img

No comments:

Post a Comment