wake-up-neo.com

asp.net-Anzeigebild von Byte-Array

Ich habe ein Byte-Array und versuche, ein Bild davon anzuzeigen.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;

namespace RealPortableTerminal
{
public partial class resim : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        PortableTerminalDbEntities entity = new PortableTerminalDbEntities();
        byte[] arr = (from b in entity.Sicil where b.Id == 31 select b.Fotograf).First();

        Image rImage = null;
        using (MemoryStream ms = new MemoryStream(arr))
        {
            rImage = Image.FromStream(ms);
        }
    }
}
}

Es unterstreicht FromStream und sagt, dass "System.Web.UI.WebControls.Image" keine Definition für "FromStream" enthält. Es scheint, dass das Hinzufügen von System.Data.Linq reference nichts geändert hat. Fehlt mir etwas? Übrigens bin ich mir ziemlich sicher, dass ich das Byte-Array korrekt aus der Datenbank nehme.

6
Koray Durudogan

Eine andere Möglichkeit besteht darin, Ihr Byte-Array in eine Basis-64-Zeichenfolge zu konvertieren und diese der ImageUrl-Eigenschaft von rImage zuzuweisen, wie folgt:

rImage.ImageUrl = "data:image;base64," + Convert.ToBase64String(arr);

Sie benötigen keine Zwischenvariable MemoryStream oder eine separate Seite ... Wenn das Byte-Array ein vom Browser unterstütztes Bildformat hat, wird es angezeigt. Viel Glück.

18
John Riehl
<img id="img" runat="server" alt=""/>

Im Code hinterher

string base64String = Convert.ToBase64String(arr, 0, arr.Length);
img.Src = "data:image/jpg;base64," + base64String;

Sie würden MemoryStream nicht benötigen. 

6
Sami

Sie denken wahrscheinlich an System.Drawing.Image; diese Klasse unterstützt FromStream.

Dieser Forumseintrag zeigt Ihnen einige Möglichkeiten, dynamische Bilder in WebForms zu laden.

Am einfachsten wäre es wahrscheinlich, eine separate Aspx-Seite zu erstellen, die Ihr Bild lädt, wie Sie es hier tun, und es mit Response.BinaryWrite im Antwortstream speichern. Erstellen Sie dann in der gerade bearbeiteten Seite ein Image-Steuerelement, das die Neue Aspx-Seite als Image-URL. Sie können natürlich Abfragezeichenfolgeparameter verwenden, wenn Sie verschiedene Bilder laden möchten.

1
ekolis