2013-01-20 178 views
5

我使用codeplex的ImageTools來保存畫布爲PNG;然而,當我使用writeableBitmap.SaveJpeg()時,我遇到了同樣的問題。因此,問題不在於圖像類型,而在於我如何在IsolatedStorage中進行保存或加載。將圖像保存並加載到IsolatedStorage需要保存兩次

當我通過按保存按鈕保存圖像文件存在,但是當我加載圖像沒有出現。如果我保存圖像兩次,圖像加載並正確顯示。

以下是我的代碼。

保存文件:

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(); 
    } 
} 

加載文件

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

剛剛嘗試了你的代碼,似乎工作正常,都在模擬器上(諾基亞Lumia 920)... –

+0

奇數。我已經嘗試過仿真器和設備(L920,針對Windows Phone 8.0的Visual Studio 2012),並且這兩個錯誤都是持續存在的。不過,謝謝你讓我知道它有效。 –

回答

0

試試這個代碼從isoStore檢索圖像。這個對我有用。

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; 
     } 
} 

您可以將圖像的來源設置爲filePath,並且訪問它時不會有任何問題。

如果這不起作用,那麼問題是當你保存圖像。您可能必須找到解決方法,將畫布保存爲png或jpeg。