如何利用asp.net將圖形送出

包含 c#, asp.net, vb.net, delphi.net 等 .net framework 的開發討論區
回覆文章
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

如何利用asp.net將圖形送出

文章 tim »

http://www.ftponline.com/vsm/2002_07/on ... /esposito/
這篇資料介紹了如何將 SQL Server 中的 NorthWind 中的 Employees 資料表中的 photo 圖檔直接輸出給 web browser.
以下為整理好的程式碼,

代碼: 選擇全部

     
    <%@ Page Language="C#" %> 
    <%@ Import Namespace="System" %> 
    <%@ Import Namespace="System.Data.SqlClient" %> 
    <%@ Import Namespace="System.IO" %> 
    <%@ Import Namespace="System.Drawing.Imaging" %> 
    <%@ Import Namespace="System.Drawing" %> 
     
    <html> 
    <script runat="server">  
    private void Page_Load(object sender, System.EventArgs e) 
    { 
       if(Request["id"]==null) return; 
       SqlConnection cn; 
       cn = new SqlConnection("DATABASE=northwind;SERVER=localhost;UID=nwuser;PWD=nwuser"); 
       String cmdText = "SELECT photo FROM Employees WHERE employeeid=" + Request["id"].ToString(); 
       SqlCommand cmd = new SqlCommand(cmdText, cn); 
     
       MemoryStream ms = new MemoryStream(); 
     
       // 78 is the size of the OLE header  
       // for Northwind images. 
       // There's no header in PUBS as PUBS  
       // just contains the raw image bits. 
       int offset = 78;  
     
       cn.Open(); 
       byte [] img = (byte[]) cmd.ExecuteScalar(); 
       ms.Write(img, offset, img.Length-offset); 
       cn.Close(); 
     
       Bitmap bmp = null; 
       bmp = new Bitmap(ms); 
       Response.ContentType = "image/gif"; 
       bmp.Save(Response.OutputStream, ImageFormat.Gif); 
       ms.Close(); 
    } 
    </script> 
    </html> 
 

// 使用方法,
<img src="xxx/image.aspx?id=1">
最後由 tim 於 2014年 7月 18日, 16:58 編輯,總共編輯了 1 次。
多多留言, 整理文章, 把經驗累積下來.....
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

Re: 如何利用asp.net將圖形送出

文章 tim »

在 asp.net 中, 直接使用 bmp.Save 到 Response.OutputStream 中, 讓圖檔不需要暫存到 storage 中, 直接送給 web browser, 程式碼如下,

代碼: 選擇全部

   
    <%@ Page Language="C#" %> 
    <%@ Import Namespace="System" %> 
    <%@ Import Namespace="System.Data.SqlClient" %> 
    <%@ Import Namespace="System.IO" %> 
    <%@ Import Namespace="System.Drawing.Imaging" %> 
    <%@ Import Namespace="System.Drawing" %> 
     
    <html> 
    <script runat="server">  
    private void Page_Load(object sender,  
       System.EventArgs e) 
    { 
      Bitmap bmp = new Bitmap(420, 200);       
      Graphics g = Graphics.FromImage(bmp);       
      Pen p = new System.Drawing.Pen(System.Drawing.Color.Red); 
      g.DrawLine(p, 10, 10, 20, 20); 
     
      Font drawFont = new Font("Arial", 12); 
      SolidBrush drawBrush = new SolidBrush(Color.White); 
      string drawText;   
     
      drawText = Request.UserHostAddress;   
      g.DrawString(drawText, drawFont, drawBrush, 10, 40);   
       
      HttpBrowserCapabilities bc = Request.Browser; 
      drawText = bc.Type + "/" + bc.Browser + "/" + bc.Version + "/" + bc.Platform; 
      g.DrawString(drawText, drawFont, drawBrush, 10, 60); 
       
      drawText = System.DateTime.Now.ToString();   
      g.DrawString(drawText, drawFont, drawBrush, 10, 80); 
       
      Response.ContentType = "image/gif"; 
      bmp.Save(Response.OutputStream, ImageFormat.Gif); 
       
       
    } 
    </script> 
    </html> 
     
範例結果如下,
13_7.gif
13_7.gif (1.96 KiB) 已瀏覽 5054 次
本範例可以在圖上繪出 user ip, browser type 等資訊!!
最後由 tim 於 2014年 7月 18日, 16:59 編輯,總共編輯了 1 次。
多多留言, 整理文章, 把經驗累積下來.....
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

Re: 如何利用asp.net將圖形送出

文章 tim »

在 asp.net 中, 直接使用 bmp.Save 到 Response.OutputStream 中, 讓圖檔不需要暫存到 storage 中, 直接送給 web browser, 程式碼如下,

代碼: 選擇全部

    
    <%@ Page Language="C#" %> 
    <%@ Import Namespace="System" %> 
    <%@ Import Namespace="System.Data.SqlClient" %> 
    <%@ Import Namespace="System.IO" %> 
    <%@ Import Namespace="System.Drawing.Imaging" %> 
    <%@ Import Namespace="System.Drawing" %> 
     
    <html> 
    <script runat="server">  
    private void Page_Load(object sender,  
       System.EventArgs e) 
    { 
      Bitmap bmp = new Bitmap(420, 200);       
      Graphics g = Graphics.FromImage(bmp);       
      Pen p = new System.Drawing.Pen(System.Drawing.Color.Red); 
      g.DrawLine(p, 10, 10, 20, 20); 
     
      Font drawFont = new Font("Arial", 12); 
      SolidBrush drawBrush = new SolidBrush(Color.White); 
      string drawText;   
     
      drawText = Request.UserHostAddress;   
      g.DrawString(drawText, drawFont, drawBrush, 10, 40);   
       
      HttpBrowserCapabilities bc = Request.Browser; 
      drawText = bc.Type + "/" + bc.Browser + "/" + bc.Version + "/" + bc.Platform; 
      g.DrawString(drawText, drawFont, drawBrush, 10, 60); 
       
      drawText = System.DateTime.Now.ToString();   
      g.DrawString(drawText, drawFont, drawBrush, 10, 80); 
       
      Response.ContentType = "image/gif"; 
      bmp.Save(Response.OutputStream, Imageformat.Gif); 
       
       
    } 
    </script> 
    </html> 




範例結果如下,
13_7.gif
13_7.gif (1.96 KiB) 已瀏覽 5054 次
本範例可以在圖上繪出 user ip, browser type 等資訊!!
多多留言, 整理文章, 把經驗累積下來.....
回覆文章