Image Gallery via Web
Avete mai sognato di costruire una galleria d'immagini (Image Gallery) su un sito Web?
Beh con ASP 3.0 non era molto difficile anche se spesso bisognava ricorrere ad artifizi per fare il resize delle immagini magari usando dei tools esterni per poi uploadarle.
Si creavano quindi delle thumbnails (miniature/disapositive) delle immagini in modo da raggrupparle in un'unica schermata complessiva e magari paginata disponibile per l'utente che poteva vederle tutte assieme e poi scegliere quale vedere a piena risoluzione scaricando la versione originale ingrandita.
Oggi finalmente ASP.NET ci mette a disposizione degli strumenti per creare automaticamente delle Thumbnails, magari direttamente on-the-fly durante il processo di upload al server.
Una Web Gallery via Web
ASP.NET e il metodo GetThumbnailImage
Il namespace
System.Drawing mette a disposizione del programmatore diverse classi che permettono di lavorare sulle immagini in genere ma non solo.
La classe
Image mette a disposizione un methodo chiamato
GetThumbnailImage che ritorna semplicemente una miniatura dell'immagine caricata. Il metodo è anche disponibile su una classe
Bitmap visto che eredita da Image.
Vediamo qui di seguito due esempi in C# e VB.NET:
GetThumbnailImage in C#
public bool ThumbnailCallback(){
return false;
}
private void CreateThumbnail(){
Image.GetThumbnailImageAbort myCallback =new
Image.GetThumbnailImageAbort(ThumbnailCallback);
Bitmap myBitmap = new Bitmap("c:\\prova.jpg");
Image myThumbnail = myBitmap.GetThumbnailImage(64,64, myCallback, IntPtr.Zero);
pictureBox1.Image=myThumbnail;
}
GetThumbnailImage in VB.NET
Private Function ThumbnailCallback() As BooleanEnd FunctionPrivate Sub CreateThumbnail() Dim myCallback As Image.GetThumbnailImageAbort = AddressOf ThumbnailCallback
Dim myBitmap As Bitmap = New Bitmap("c:\\prova.jpg")
Dim myThumbnail As Image = myBitmap.GetThumbnailImage(64, 64,myCallback, IntPtr.Zero)
PictureBox1.Image = myThumbnail
End SubCome vedete c'è da definire un delegate anche se non viene utilizzato in GDI+ 1.0, così dice la documentazione del Framework, e non viene mai richiamato.
L'esempio mostra il caricamento di un'immagine da disco
prova.jpg e successivamente viene richiamato il metodo
(GetThumbnailImage) per ottenere una miniatura delle dimensioni definite (nel nostro caso come potete vedere 64 x 64).
Alla fine l'immagine ottenuta viene assegnata ad una Picture Box precedentemente creata sulla nostra Form.