Ho una matrice di byte che rappresenta un'immagine. Voglio presentare l'immagine memorizzata in quell'array di byte in una pagina aspx. Posso farlo usando un'immagine o un controllo della mappa? Se é cosi, come? In caso contrario, qual è la soluzione?bytearray all'immagine asp.net
risposta
Pensa a come le immagini normali vengono pubblicate in una pagina Web: il nome file viene fatto riferimento nel markup e il browser invia una richiesta separata al server per quel file.
Lo stesso principio si applica qui, tranne che invece di fare riferimento a un file di immagine statica, si vorrebbe fare riferimento a un gestore di ASP.NET che serve i byte dell'immagine:
<img src="/imagehandler.ashx" />
La breve del gestore sarebbe simile a questa:
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
context.Response.ContentType = "image/JPEG";
}
}
Ecco una (lunga) resource that covers the concepts di creare un HttpHander in ASP.NET.
Inoltre, come fa notare Joel, pensa a da dove viene la matrice di byte, poiché HttpHandler è servito in una richiesta completamente diversa dalla pagina. Al livello più elementare, le due richieste non sono a conoscenza l'una dell'altra o non condividono alcun dato.
Una soluzione comune a questo problema è quello di mettere i dati di immagine nella cache:
Guid id = Guid.NewGuid();
HttpRuntime.Cache.Add(id.ToString(), imageData);
E passare la chiave del HttpHandler nella querystring, in modo che possa prenderlo dalla cache:
<img src="/imagehandler.ashx?img=<%=id%>" />
<!-- will print ...ashx?img=42a96c06-c5dd-488c-906f-cf20663d0a43 -->
Si potrebbe scrivere un gestore generica che servirà l'immagine:
<%@ 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; }
}
}
E quindi chiamare i t in una pagina aspx:
<asp:Image ID="pic" runat="server" ImageUrl="~/Picture.ashx" />
Il seguente articolo risponde vostra domanda: Auto-bind byte[] to asp:Image
Un'altra cosa che si può fare, che è più veloce sarebbe non utilizzare il controllo asp.net immagine e utilizzare l'elemento di base img in html. Quindi, nella tua pagina asp.net, crea un elemento img con un id di img e runat impostato sul server.
allora si potrebbe fare qualcosa di simile:
<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]);
}
Grazie per il bel trucco :) –
Soluzione intelligente. Tieni presente che gli IE precedenti alla versione 8 non possono utilizzare lo schema URL dei dati http://caniuse.com/datauri –
Grazie mille per aver risolto il mio problema con il minor numero di passaggi. – Ahmad
- 1. Come convertire bytearray in immagine o immagine in bytearray?
- 2. visualizza immagine da byteArray
- 3. utilizzando bytearray con socket.recv_into
- 4. Python: bytearray vs array
- 5. pitone ByteArray stampa
- 6. da byteArray a bigInteger
- 7. come response.write bytearray?
- 8. Differenza tra bytearray e lista
- 9. PIL: Converti Bytearray in Immagine
- 10. Converti ByteArray in UUID java
- 11. È necessario creare PDF da bytearray (Java)
- 12. crea Bitmap da byteArray in Android
- 13. Riproduci musica da bytearray in html5
- 14. Letto in un bytearray a un offset?
- 15. Come copiare un buffer bytearray python?
- 16. Differenza tra Bytearray e List in Python
- 17. Trasferimento ByteArray attraverso parcella restituisce NullPointerException
- 18. Java: dimensione dell'output di compressione-byteArray
- 19. Salvataggio ByteArray di file pdf in titanio
- 20. Come ottenere le dimensioni dell'immagine da ByteArray
- 21. Download forzato ASP.Net
- 22. byte vs bytearray in Python 2.6 e 3
- 23. Python 3 - Interfaccia di flusso non di copia per bytearray?
- 24. Eccezione OutOfMemory nella conversione di ByteArray in stringa?
- 25. Python mysql-connector converte alcune stringhe in ByteArray
- 26. quando utilizzare writeUTF() e writeUTFBytes() in ByteArray di AS3
- 27. Differenza tra ByteArray e Array <Byte> in kotlin
- 28. Stringa Java to bytearray di nuovo alla stringa
- 29. Come posso ottenere un IL bytearray da un DynamicMethod?
- 30. La conversione da bytearray a byte comporta una copia?
+1 - anche notare che questo significa che sarà probabilmente bisogno di ripensare come funziona la vostra pagina corrente, dal momento che probabilmente ottenuto il array di byte nel corso dell'elaborazione di una richiesta per una risorsa diversa. –
Buon punto Joel. –