18

Feb

Visualizzare immagini GIF in un’applicazione Windows Phone

L’altro giorno ho fatto due chiacchiere via Skype con Nazareno Manco, un amico sviluppatore, che si è trovato ad affrontare un problema nello sviluppo di un’applicazione Windows Phone: la sua necessità era quella di recuperare delle immagini dal web, da visualizzare all’interno di una pagina. Il problema è che queste immagini erano in formato GIF, che non è supportato da Silverlight e, di conseguenza, da Windows Phone.

Facendo una breve ricerca su Internet mi sono imbattuto in questo post di Jaime Rodriguez, in cui viene citata la libreria Image Tools per Silverlight, che offre una serie di controlli e converters che permettono di convertire in tempo reale un’immagine da un formato all’altro. Vediamo come utilizzarla per visualizzare imamgini GIF anche all’interno di un’applicazione Windows Phone.

Innanzitutto dovete includere le varie DLL di cui è composta la libreria all’interno dell’applicazione: il modo più semplice è utilizzare NuGet, così che venga copiato il necessario in automatico.

SNAGHTML89ae30b

Dopodichè l’utilizzo di questa libreria si articola in due step:

  • L’utilizzo del controllo AnimatedImage, che va a sostiture il controllo Image e funge da contenitore all’interno del quale verrà visualizzata l’immagine.
  • L’utilizzo del converter ImageConverter, che si occupa di fare la conversione da un formato all’altro.

Entrambe le classi fanno parte del namespace ImageTools.Controls, che deve essere quindi dichiarato nello XAML:

xmlns:imagetools="clr-namespace:ImageTools.Controls;assembly=ImageTools.Controls"

A questo punto potete dichiarare come risorsa (locale nella pagina o globale a livello di applicazione) il converter ImageConverter, come nell’esempio:


      
      

Ora vi basta inserire il controllo AnimatedImage, valorizzando la proprietà Source con l’indirizzo dell’immagine GIF e applicando il converter appena dichiarato.


      
      

Nel codice, la proprietà ImageSource è di tipo Uri e punta all’indirizzo di un’immagine GIF di esempio:

ImageSource = new Uri("http://www.nonstopgifs.com/animated-gifs/games/games-animated-gif-002.gif", UriKind.Absolute);

Il trucco per “far funzionare la magia” è l’utilizzo di uno dei decoder messi a disposizione dalla libreria Image Tools: è sufficiente registrarlo all’avvio dell’applicazione, specificando il formato dell’immagine che deve essere decodificato. Nel nostro esempio, dobbiamo utilizzare un GifDecoder, che viene registrato come nell’esempio:

public MainPage()
      {
      InitializeComponent();
      ImageTools.IO.Decoders.AddDecoder();
      }

A questo punto, grazie ai due controlli utilizzati in precedenza qualsiasi immagine GIF che verrà caricata sarà automaticamente convertita in modo da essere visualizzata: la cosa interessante è che, grazie anche al controllo AnimatedImage, sono supportate le GIF animate, per cui l’animazione verrà visualizzata correttamente.

Di seguito trovate il link per scaricare il progetto di esempio di riferimento di questo post.

by Il blog di Matteo Pagani on 2/18/2012
Post archive