如何使用C#从字节数组中显示Web表单中的图像

oct*_*ron 6 c# asp.net webforms

这是我的代码,它只是清除网页并绘制图像,所以表格的其余部分消失了!我需要在表单中显示图像.

这是我的用户控件来显示图像:

protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["ObjHoteles"] == null)
        {
            Label1.Text = "Por favor, primero seleccione un hotel para desplegar las fotos.";
        }
        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.Clear();
                Response.ContentType = "image/jpeg";
                Response.Expires = 0;
                Response.BinaryWrite(Foto);
                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);

            }
        }
Run Code Online (Sandbox Code Playgroud)

我需要找到一种不清除所有页面的方法,只需在用户控件中绘制图像.

Shi*_*ire 14

您可以编写一个页面.aspx或一个处理程序,可能是.ashx将图片的内容发送回浏览器.您可以在网址中传递信息.然后使用带有html标记或html控件的URL到该页面来显示它.

编辑:您需要使用控件.您可以将二进制数据转换为base64并将内容输出到html页面.

我给你一个img html标签的例子:

<img alt="" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAsMAAAGhCAIAAAALOi7ZAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QgLEhM6PUSGrwAAIABJREFUeNq8vcuSLEmWHKZ6jnlEZt5761Z3T/eAHAICAYRcEALsuOCWPzbzDfwP/gKXWJACoRDCBSkEBgPhADKY7qnu+4wIdztHuThmHh55q2t6ho+SlpaqyMwID3ez89CjqsY//dM//bM/+zMc/pGE3//PT/z09/1I0t/1Rz/x+o9+0I++vv/n8fU/8MW/9U9+9JVvL/v/u1cy86cv5ttfePXKq//8fTfhp+/qT3/oq8v+6V/+Ay/v25/+4X/46nqO"/>
Run Code Online (Sandbox Code Playgroud)

您还可以使用CSS对图像使用base64编码:

background-image: url(data:image/jpeg;base64,IVB)
Run Code Online (Sandbox Code Playgroud)

要从C#转换为base64,您可以使用:

using System;
Run Code Online (Sandbox Code Playgroud)

和:

Convert.ToBase64String(Foto);
Run Code Online (Sandbox Code Playgroud)


Ser*_*tin 12

还有另一种简单的方法:

  1. 在您的.aspx页面上:

    <asp:Image id="Image1" runat="server"></asp:Image>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后在你的CodeBehind文件中.aspx.cs:

    Image1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(Foto)
    
    Run Code Online (Sandbox Code Playgroud)