Immagini dinamiche con Deep Zoom e Silverlight

di Alessio Leoncini, in Silverlight 3.0, Deep Zoom,

L'implementazione di Deep Zoom in Silverlight rappresenta indubbiamente un modo interessante di visualizzazione delle immagini, sia di medie che di grandi risoluzioni. Infatti, anche con immagini di grandezza tradizionale per il web, con Deep Zoom possiamo aggiungere un alto livello di interattività per l'utente e realizzare interessanti effetti.

Come abbiamo introdotto nell'articolo https://www.silverlightitalia.com/articoli/silverlight/Deepzoom-Silverlight-2.0.aspx, Deep Zoom si basa sul principio di elaborazione in tempo reale di una serie di tessere che compongono l'immagine originale. Per avere prestazioni adeguate all'uso, i progettisti del plug-in richiedono che tali tessere siano pre-elaborate attraverso il tool Deep Zoom Composer, con il quale possiamo realizzare la nostra composizione delle immagini, che il programma esporterà per noi seguendo l'articolata struttura richiesta dalla tecnologia.

L'esigenza di pre-elaborare le immagini con un tool esterno può essere un vincolo in quei progetti in cui diamo all'utente la possibilità di pubblicare le proprie immagini: per tale esigenza possiamo generare dinamicamente le varie tessere attraverso la libreria DeepZoomTools.dll, distribuita insieme al Composer, liberamente utilizzabile in produzione.
L'assembly si trova nella cartella di installazione del tool e, benché non sia documentata, una volta referenziata in una applicazione web, il suo utilizzo è molto semplice:

VB.NET
Dim _pathList As New List(Of String)()
'directory dove sono presenti le immagini
Dim _dir As New DirectoryInfo(HttpContext.Current.Server.MapPath("Images"))
Try
  'immagini PNG presenti nella directory
  Dim _files As FileInfo() = _dir.GetFiles("*.png")
  'collezione di path completi delle immagini
  For Each _file In _files
    _pathList.Add(String.Format("{0}/{1}", _dir.FullName, _file.Name))
  Next
Catch
End Try
Dim _collCreator As New Microsoft.DeepZoomTools.CollectionCreator()
'creazione della piramide delle immagini specificate nella lista e
'del file XML relativo
_collCreator.Create(_pathList, Path.Combine(_dir.FullName, "Images"))

C#
List<string> _pathList = new List<string>();
//directory dove sono presenti le immagini
DirectoryInfo _dir = new DirectoryInfo(HttpContext.Current.Server.MapPath("Images"));
try
{
  //immagini PNG presenti nella directory
  FileInfo[] _files = _dir.GetFiles("*.png");

  //collezione di path completi delle immagini
  foreach (var _file in _files)
  {
    _pathList.Add(string.Format("{0}/{1}", _dir.FullName, _file.Name));
  }
}
catch { }
Microsoft.DeepZoomTools.CollectionCreator _collCreator = new Microsoft.DeepZoomTools.CollectionCreator();
//creazione della piramide delle immagini specificate nella lista e
//del file XML relativo
_collCreator.Create(_pathList, Path.Combine(_dir.FullName, "Images"));

Nello snippet precedente recuperiamo le immagini PNG di una cartella del sito web, costruiamo il percorso e lo passiamo come parametro al metodo Create dell'oggetto CollectionCreator.
Potremmo far eseguire il codice all'interno di un HttpHandler o anche in una semplice pagina ASP.NET, da richiamare al momento della necessità di creare le gerarchie delle immagini.

Deep Zoom per Silverlight è stato trattato nel capitolo 12 del libro "Silverlight 3.0 - Guida Completa"
di Daniele Bochicchio, Cristian Civera, Alessio Leoncini e Marco Leoncini.
http://books.aspitalia.com/Silverlight-3.0/

E' possibile leggere un'anteprima del capitolo 10 all'indirizzo:
https://www.silverlightitalia.com/articoli/silverlight/effetti-speciali-immagini-silverlight-3.0.aspx

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.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi