2012-03-07 75 views
0

我使用Xml Serialization序列化了bitmapImage。它給錯誤, 「Uri的XML序列化拋出SecurityException」如何在Wp7中使用Xml序列化序列化bitmapImage

我有Observablecollection中的BitmapImage的集合。 OnDeactivation(Tombstone)我正在保存Persistent類的屬性類型。在節省我使用Serailization。

請幫幫我,如何解決這個問題

+0

請顯示你在做什麼。不要只是描述它。 – 2012-03-07 11:03:19

回答

2

我建議保存到獨立存儲以及。

這裏是我使用的方法:

實用方法BitmapImage的轉換爲byte []和背部:

public sealed class ImageConverter 
{ 
    public static byte[] ConvertToBytes(BitmapImage bitmapImage) 
    { 
     if (bitmapImage == null) 
     { 
      return null; 
     } 
     WriteableBitmap image = new WriteableBitmap(bitmapImage); 

     using (MemoryStream stream = new MemoryStream()) 
     { 

      image.SaveJpeg(stream, image.PixelWidth, image.PixelHeight, 0, 100); 
      return stream.ToArray(); 
     } 
    } 

    public static BitmapImage ConvertToImage(byte[] byteArray) 
    { 
     if (byteArray == null) 
     { 
      return null; 
     } 

     BitmapImage bitmapImage = new BitmapImage(); 

     using (MemoryStream stream = new MemoryStream(byteArray)) 
     { 
      bitmapImage.SetSource(stream); 
     } 
     return bitmapImage; 
    } 
} 

可以字節[]然後存儲到獨立存儲平凡。我用這樣的字典:

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 

    public BitmapImage getImageForURL(string URL) 
    { 
     Dictionary<string, byte[]> imageDictionary = (Dictionary<string, byte[]>)settingsDictionary["imageDictionary"]; 
     if (imageDictionary != null) 
     { 
      byte[] byteArray = null; 
      imageDictionary.TryGetValue(URL, out byteArray); 
      return ImageConverter.ConvertToImage(byteArray); 
     } 
     return null; 
    } 

    public void setImageForURL(string URL, BitmapImage image) 
    { 
     Dictionary<string, byte[]> imageDictionary = (Dictionary<string, byte[]>)settingsDictionary["imageDictionary"]; 
     if (URL != null && image != null) { 
      imageDictionary[URL] = ImageConverter.ConvertToBytes(image); 
     } 
    } 
1

Image to xml?更好的方法是將其保存到獨立存儲作爲文件