2010-03-20 56 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; 
} 
相关问题