【发布时间】:2011-01-29 17:45:38
【问题描述】:
如何在 Asp.net 的图像控件中显示数据库中的图像?我们必须在 asp.net 页面中显示员工的图像及其详细信息,但问题是如何在 asp.net 图像控件上显示图像,因为图像控件通过属性 ImageUrl 拍照。
请指导....
【问题讨论】:
如何在 Asp.net 的图像控件中显示数据库中的图像?我们必须在 asp.net 页面中显示员工的图像及其详细信息,但问题是如何在 asp.net 图像控件上显示图像,因为图像控件通过属性 ImageUrl 拍照。
请指导....
【问题讨论】:
您可以创建一个 HttpHandler(ashx) 页面,该页面将接受一个查询字符串并将其设置为图像控件的 imageUrl 属性
<asp:image id="imgEmployee" imageUrl="DisplayImage.ashx?employeeId=<someId>"/>
现在在 DisplayImage.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>
希望这会有所帮助..
【讨论】:
这也可以在不创建处理程序的情况下完成。
//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)
或者,如果您还想要 with 和 height,请使用 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;
}
【讨论】: