我使用Xml序列化对bitmapImage进行了序列化。它给出了错误, “Uri的XML序列化抛出SecurityException”
我在Observablecollection中有BitmapImage的集合。 OnDeactivation(Tombstone)我正在保存Persistent类的属性类型。关于保存我使用了Serailization。
请帮助我,如何解决这个问题
答案 0 :(得分: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;
}
}
然后,您可以轻松地将byte []存储到Isolated Storage。我使用了这样的词典:
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 :(得分:1)
图像到xml?更好的方法是将其作为文件保存到独立存储