Ich habe ein Byte-Array, das ein Bild darstellt. Ich möchte das Bild in diesem Byte-Array in einer aspx-Seite präsentieren. Kann ich das mit einem Bild- oder Imagemap-Steuerelement tun? Wenn das so ist, wie? Wenn nicht - was ist die Lösung?Bytearray zu Bild asp.net
Antwort
Denken Sie darüber nach, wie normale Bilder in einer Webseite bereitgestellt werden - der Dateiname wird in Markup referenziert, und der Browser sendet eine separate Anfrage an den Server für diese Datei.
Das gleiche Prinzip gilt auch hier, mit Ausnahme stattdessen eine statische Bilddatei zu referenzieren, würden Sie wollen, eine ASP.NET-Handler verweisen, die die Bytes des Bildes dient:
<img src="/imagehandler.ashx" />
Die kurze des Handlers würde etwa wie folgt aussehen:
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
context.Response.ContentType = "image/JPEG";
}
}
Hier ist eine (lange) resource that covers the concepts von einer HttpHander in ASP.NET zu schaffen.
Auch, wie Joel darauf hinweist, denken Sie darüber nach, woher das Byte-Array kommt, da der HttpHandler in einer ganz anderen Anfrage als die Seite bedient wird. Auf der grundlegendsten Ebene sind sich die beiden Anfragen nicht bewusst oder teilen keine Daten.
Eine gemeinsame Lösung für dieses Problem ist es, die Bilddaten im Cache zu setzen:
Guid id = Guid.NewGuid();
HttpRuntime.Cache.Add(id.ToString(), imageData);
Und den Schlüssel für die Httphandler in der Abfragezeichenfolgeflag passieren, so kann es aus dem Cache geholt werden:
<img src="/imagehandler.ashx?img=<%=id%>" />
<!-- will print ...ashx?img=42a96c06-c5dd-488c-906f-cf20663d0a43 -->
Sie können einen generischen Handler schreiben, die das Bild dienen:
<%@ WebHandler Language="C#" Class="Picture" %>
public class Picture : System.Web.IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
byte[] buffer = GetPictureFromSomewhere();
context.Response.ContentType = "image/jpeg";
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
}
public bool IsReusable
{
get { return false; }
}
}
Und dann rufen mich t in einer aspx Seite:
<asp:Image ID="pic" runat="server" ImageUrl="~/Picture.ashx" />
Der folgende Artikel beantwortet Ihnen Frage: Auto-bind byte[] to asp:Image
Eine andere Sache, die Sie tun können, die nicht die asp.net Bildsteuerung zu verwenden wäre schneller ist und verwenden Sie das grundlegende Element img in html. Erstellen Sie also in Ihrer asp.net-Seite ein img-Element mit einer ID von img und einem runat, der auf den Server gesetzt ist.
Dann könnten Sie so etwas tun:
<img id="img" runat="server" alt=""/>
public DataRow ClaimPhotoRow { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
img.Src = "data:image/jpg;base64," + Convert.ToBase64String((byte[])ClaimPhotoRow[0]);
}
Danke für netten Trick :) –
Clevere Lösung. Beachten Sie, dass IEs vor Version 8 das Daten-URL-Schema nicht verwenden können http://caniuse.com/datauri –
Vielen Dank für die Lösung meines Problems mit den wenigsten Schritten. – Ahmad
- 1. Wie konvertiert man Bytearray zu Bild oder Bild zu Bytearray?
- 2. PIL: Bytearray in Bild konvertieren
- 3. Android: conerting Bild in byteArray
- 4. C# ByteArray zu Image
- 5. wie zu response.write bytearray?
- 6. von ByteArray zu BigInteger
- 7. Linux zu Windows C++ Bytearray
- 8. Nummer zu ByteArray (Int64 BigEndian)
- 9. Sende ByteArray an JavaScript
- 10. Bytearray von einer Webcam
- 11. Hex byteArray
- 12. Wie Bild aus Bytearray in Microsoft-Bericht angezeigt wird
- 13. Warum wird JPGEncoded Bytearray von AS3 zu AMFPHP gesendet, was zu einem ungültigen Bild führt?
- 14. Upload ByteArray Bild auf Facebook mit Javascript SDK
- 15. Saving byteArray zu pdf-Datei in Titanium
- 16. wie in asp.net zu Bild konvertiert
- 17. .NET Encrypt Bytearray
- 18. mit Bytearray mit socket.recv_into
- 19. Android versuchen Bild als ByteArray in SQLite-Datenbank zu setzen, auf Put-Methode immer Fehler
- 20. VB.Net ByteArray Speicherleck
- 21. Hbase byteArray nach Long
- 22. Datatable.select mit Bytearray VB.NET
- 23. Python byteArray Printing
- 24. ByteArray zu MySQL von ActionScript 3 -> PHP über ZendAMF
- 25. Datei aus Bytearray öffnen
- 26. AS3 Benutzerdefiniertes Objekt zu ByteArray dann zu benutzerdefiniertes Objekt
- 27. asp.net Bild hochladen
- 28. Converting ein Float in Bytearray
- 29. Python gibt seltsames Bytearray aus
- 30. Konvertieren von Bitmap in ByteArray Android
+1 - auch beachten, bedeutet dies, dass Sie wahrscheinlich zu überdenken, wie Ihre aktuelle Seite Arbeiten benötigen, da Sie die Wahrscheinlichkeit erhalten Byte-Array im Verlauf der Verarbeitung einer Anfrage für eine andere Ressource. –
Guter Punkt Joel. –