A DotNet Raider

My adventures in the .NET world!
posts - 49, comments - 12, trackbacks - 0

My Links

News

Website View Martino Bordin's profile on LinkedIn

Archives

Post Categories

Salvare immagini nella Media Library di Windows Phone 7

Sul blog di Daniel Egan, MVP nonché Microsoft Regional Director, c’è un interessante post che illustra come salvare un’immagine nella Media Library di Windows Phone 7.

La procedura illustrata è abbastanza chiara ed è commentata in ogni passaggio significativo, per cui non mi soffermerò su di essa. Nel caso abbiate un oggetto BitmapImage caricato con la  vostra immagine (v. esempio) tutto funzionerà tranquillamente.

Tuttavia un oggetto BitmapImage può essere creato passando al costruttore un oggetto URI che identifica la risorsa, sia essa remota (caricata da web) o locale (espressa tramite Pack Uri). In questo caso, però, verrà sollevata un’eccezione di tipo NullReferenceException: Invalid pointer se l’immagine non è stata ancora scaricata completamente (l’operazione è asincrona) quando tentate di salvarla.

Per risolvere tale problema, è sufficiente:

  • inizializzare l’oggetto BitmapImage impostando CreateOptions = BitmapCreateOptions.None (il default è DelayCreation):
  1. var bitmap = new BitmapImage
  2. {
  3.     CreateOptions = BitmapCreateOptions.None,
  4.     UriSource = uriSource
  5. };

In questo modo l’immagine verrà inizializzata immediatamente e non quando verrà visualizzata nella UI (quindi, nel nostro caso, mai).

  • agganciarsi all’evento ImageOpened per salvare l’immagine scaricata nella Media Library come visto nell’esempio di Daniel Egan:
  1. bitmap.ImageOpened += (s, e) =>
  2.                 {
  3.                     var image = (BitmapImage)s;
  4.                     
  5.                     // Save image to media library...
  6.                 };

  
Il gioco è fatto!
 
Alla prossima.

Print | posted on lunedì 24 gennaio 2011 23:58 | Filed Under [ WP7 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET