2010-03-20 89 views

回答

4

您可以創建這將需要一個查詢字符串,並設置一個HttpHandler(ASHX)頁,作爲圖像控制

<asp:image id="imgEmployee" imageUrl="DisplayImage.ashx?employeeId=<someId>"/> 

現在DisplayImage的ImageUrl屬性。 ashx的,你可以重寫的processRequest象下面這樣: -

public void ProcessRequest (HttpContext context) 
    { 
      int employeeId; 
      if (context.Request.QueryString["employeeId"] != null) 
    employeeId = Convert.ToInt32(context.Request.QueryString["employeeId"]); 
      else 
      throw new ArgumentException("No parameter specified"); 

     byte[] imageData= ;// get the image data from the database using the employeeId Querystring 
     Response.ContentType = "image/jpeg"; // You can retrieve this also from the database 
     Response.BinaryWrite(imageData); 

    } 

Web.config中的變化: -

<httpHandlers> 
    <add verb="*" path="img/*" type="DisplayImage"/> 
</httpHandlers> 

詳細herehere

希望這有助於..

+0

我想你錯了。我必須在asp.net的圖像控件中顯示圖像,而不僅僅是在網頁上。 – HotTester 2010-03-20 08:17:53

+0

@HotTester,上面的代碼/概念將顯示在IMG控制圖像。爲了更多地解釋,假設你有一個頁面(EmployeeDetails.aspx),你必須將圖像控制,其IMAGEURL的是「DisplayImage.ashx?僱員= 12」。當你請求「EmployeeDetails.aspx」頁面,當圖像控制是越來越呈現,請求將前往DisplayImage.ashx(一個HttpHandler),它只是要輸出的二進制數據的圖像,然後將得到顯示在Employee.aspx的Image控件中。如果我仍然誤解了你的問題,請告訴我。 – 2010-03-20 08:44:54

0

這也可以不創建一個處理程序中完成。

//get the image from the database as byte array 
byte[] image = (byte[])dr["image"]; 

//set the ImageUrl of the Image Control as a Base64 string 
Image1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(image) 

或者,如果你想與和高度也,用MemoryStream創建Image並獲得圖像屬性。

using (MemoryStream ms = new MemoryStream(image)) 
{ 
    System.Drawing.Image imageFromDB = System.Drawing.Image.FromStream(ms); 

    Image1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(image); 
    Image1.Width = imageFromDB.Width; 
    Image1.Height = imageFromDB.Height; 
} 
相關問題