Home Page Home Page Tips & Tricks Come creare dei Thumbnails usando .NET ?

Come creare dei Thumbnails usando .NET ?


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
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 Boolean

End Function

Private 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 Sub

Come 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.
Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5