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.
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.
<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.
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.