如何使用字节数组在Web窗体内的用户控件中显示图像
本文关键字:控件 用户 显示 图像 显示图 窗体 字节 何使用 字节数 数组 Web | 更新日期: 2023-09-27 18:27:26
这是代码,问题是图像被显示,但在清除所有页面后,我需要在web窗体内的用户控件内绘制它。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["ObjHoteles"] == null)
{
Label1.Text = "select hotel first please.";
}
else
{
if (!IsPostBack)
{
List<Byte[]> ArrayFotos = new List<Byte[]>();
string NombreDelHotel = "";
Hoteles Hotel1 = (Hoteles)Session["ObjHoteles"];
NombreDelHotel = Hotel1.NombreHotel;
ArrayFotos = Persistencia.PersistenciaFotos.FotosDeHotel(NombreDelHotel);
Session["CantFotos"] = ArrayFotos.Count();
Byte[] Foto = ArrayFotos[0];
Response.Buffer = true;
Response.ContentType = "image/jpeg";
Response.Expires = 0;
Response.OutputStream.Write(Foto, 0, Foto.Length);
Session["NumFoto"] = 0;
}
else
{
List<Byte[]> ArrayFotos = new List<Byte[]>();
string NombreDelHotel = "";
Hoteles Hotel1 = (Hoteles)Session["ObjHoteles"];
NombreDelHotel = Hotel1.NombreHotel;
ArrayFotos = Persistencia.PersistenciaFotos.FotosDeHotel(NombreDelHotel);
Session["CantFotos"] = ArrayFotos.Count();
Byte[] Foto = ArrayFotos[(int)Session["NumFoto"]];
Response.Buffer = true;
Response.Clear();
Response.ContentType = "image/jpeg";
Response.Expires = 0;
Response.BinaryWrite(Foto);
}
}
}
我需要在web表单中显示用户控件所在的图像。而不是在新页面中。
我需要使用一个用户控件,它是我的客户特别要求的。
添加
<img src="/imagehandler.ashx" />
和
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
context.Response.ContentType = "image/JPEG";
}
}
这个问题的另一个解决方案是将图像数据放入缓存:
Guid id = Guid.NewGuid();
HttpRuntime.Cache.Add(id.ToString(), imageData);
And pass the key to the HttpHandler in the querystring, so it can fetch it from cache:
<img src="/imagehandler.ashx?img=<%=id%>" />
<!-- will print ...ashx?img=42a96c06-c5dd-488c-906f-cf20663d0a43 -->
参考:字节数组到镜像asp.net