<asp:dynamicimage />

di Andrea Zani, in .NET2,

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! :)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese