Con l'ASP.NET 2.0 è finalmente stato introdotto la creazione dinamica di immagini direttamente dall'interno della pagina aspx che deve contenere tale immagine. Prima di creare confuzione: è già possibile con il Framework 1.0 e 1.1 creare direttamente da codice grafici o foto anche presi dal database, ma questo comporta la scrittura di un'ulteriore pagina che funge da immagine. Per esempio:
<html><body> Immagine creata dinamicamente: <img src="immagine.aspx" /> </body></html>
In questo caso "immagine.aspx" si presta alla creazione e invio dell'immagine al browser. Questo comporta un piccolo problema: se la nostra immagine proviene da un database dovremo accedere ad esso per ben due volte: la prima nella pagina asp.net per, ad esempio, inserire nel codice HTML informazioni su di essa; la seconda per prelevare i dati binari che compongono l'immagine.
Con ASP.NET 2.0 questo è un lontano ricordo visto che è presente il nuovo control: <asp:dynamicimage />. Il suo è semplice: all'interno del codice Html è sufficiente inserire il nome di questo control più eventuali parametri:
<asp:dynamicimage id="DynamicImage1" imagetype="Jpeg" alternatetext="Testo alternativo" runat="server" />
Quindi dall'interno del codice della nostra pagina asp.net 2.0, possiamo prelevare direttamente i dati dal database compresi quelli binari e "inserirli" in questo nuovo control:
DynamicImage1.ImageBytes=ArrayBytes
Un esempio reale di utilizzo può essere il seguente:
<script language="c#" runat="server"> void Page_Load() { FileStream stream = new FileStream(@"c:\immagini\fotografia.jpeg", FileMode.Open, FileAccess.Read); byte[] immagine=new byte[stream.Length-1]; stream.Read(immagine,0,(int)stream.Length-1); stream.Close(); DynamicImage1.ImageBytes = immagine; } </script> <asp:dynamicimage id="DynamicImage1" imagetype="Jpeg" alternatetext="Fotografia ricordo..." runat="server" />
Questo codice "carica" nel dynamicimage la fotografia presente nella cartella "c:\immagine".
Ma cosa fa in definitiva questo control? Come viene inviata questa fotografia? Cosa viene inserito nel codice HTML della pagina?
Ecco il risultato del codice qui sopra richiamato dal browser:
<img id="DynamicImage1" src="CachedImageService.axd?data=5e627475-8978-4826-9b38-b745f927df69" alt="" style="border-width:0px;" />
Viene richiamata l'handler "ChacheImageServie.axd" che bufferizza momentanenamente l'immagine creata. Troppo astuti i programmatori di Redmond! :)
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Un po' di benchmark tra Linq, Entity Framework e Nhibernate, il 12 ottobre 2008 alle 14:46
- UrlRewriting con trabocchetti vari, l'11 dicembre 2007 alle 21:00
- Windows Forms - DataGridView e validazione, il 23 settembre 2007 alle 20:08
- ControlParameter e masterpage... bug?, il 23 dicembre 2006 alle 15:58
- Se Visual Studio 2005 non accetta più la tastiera, il 16 dicembre 2006 alle 20:45
- Service Pack 1 di Visual Studio 2005, il 16 dicembre 2006 alle 20:35