如何在Wp7中使用Xml序列化来序列化位图图像



我已经使用Xml序列化对位图图像进行了序列化。它给出错误,"Uri的XML序列化引发SecurityException"

我有Observablecollection中的BitmapImage集合。OnDeactivation(Tombstone)我正在保存Persistent类的属性类型。在《拯救》中,我使用了Seralization。

请帮助我,如何解决这个

我建议也保存到独立存储。

以下是我使用的方法:

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

图像到xml?更好的方法是将其作为文件保存到隔离存储