2013-01-20 16 views
5

Sto usando ImageTools da codeplex per salvare una tela come png; tuttavia, ho avuto lo stesso problema quando stavo usando un writeableBitmap.SaveJpeg(). Pertanto, il problema non riguarda il tipo di immagine, ma piuttosto il modo in cui sto salvando o caricando in IsolatedStorage.Salvare e caricare l'immagine su IsolatedStorage Richiede risparmio due volte

Quando si salva l'immagine premendo un pulsante di salvataggio il file esiste, ma quando carico l'immagine non viene visualizzato nulla. Se salvi l'immagine due volte, l'immagine viene caricata e visualizzata correttamente.

Di seguito è riportato il mio codice.

salvataggio file:

ExtendedImage myImage = myCanvas.ToImage(); 

using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (isoStore.FileExists("image.png")) 
     isoStore.DeleteFile("image.png"); 

    using (var fileStream = isoStore.CreateFile("image.png")) 
    { 
     myImage.WriteToStream(fileStream, "image.png"); 
     fileStream.Close(); 
    } 
} 

Caricamento di file

BitmapImage bi = new BitmapImage(); 

using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (isoStore.FileExists("image.png")) 
    { 
     using (var fileStream = isoStore.OpenFile("image.png", FileMode.Open)) 
     { 
      bi.SetSource(fileStream); 
      this.img.Height = bi.PixelHeight; 
      this.img.Width = bi.PixelWidth; 
      this.img.Source = bi; 
     } 
    } 
} 
+1

Ho appena provato il codice e sembra funzionare bene, sia sull'emulatore che sul dispositivo (Nokia Lumia 920) ... –

+0

Dispari. Ho provato su entrambi emulatore e dispositivo (L920, Visual Studio 2012 targeting per Windows Phone 8.0) e l'errore è persistente su entrambi. Grazie per avermi fatto sapere che funziona, tuttavia. –

risposta

0

Prova questo codice per recuperare l'immagine da isoStore. Per me funziona.

using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
     if (iso.FileExists(string.Format("image.png"))) 
     { 
      string fileName = "image.png"; 
      string filePath = iso.GetType().GetField("m_RootDir", System.Reflection.BindingFlags.NonPublic | 
      System.Reflection.BindingFlags.Instance).GetValue(iso).ToString() + fileName; 
     } 
} 

È possibile impostare la sorgente dell'immagine su FilePath e non si avranno problemi ad accedervi.

Se ciò non funziona, il problema si verifica mentre si salva l'immagine. Potrebbe essere necessario trovare una soluzione alternativa per salvare la tela su png o jpeg.

Problemi correlati