序列化包含BitmapImage的对象
作者:互联网
这是关于此主题的另一个问题:How to use deserialized object?我的类中有一些变量的问题,现在我只是将[XmlIgnore]放在不能序列化的变量前面,因此该类的序列化现在可以使用.
我的课看起来像这样:
public class Channel : INotifyPropertyChanged
{
public int Width { get; set; }
public int Height { get; set; }
[XmlIgnore]
public BitmapImage Logo { get; set; }
public string CurrentCoverURL { get; set; }
[XmlIgnore]
public SolidColorBrush Background { get; set; }
private string name;
public string Name
{
get { return name; }
set
{
name = value;
NotifyPropertyChanged("Name");
}
}
}
现在,我还需要以某种方式对Bitmapimage和SolidColorBrush进行序列化,以便将这些信息传递给下一个视图.
我找到了一种方法来执行此操作(Serialize a Bitmap in C#/.NET to XML),但这不适用于Windows 8 Apps. System.Drawing.Bitmap在Windows 8中不可用.
有人可以帮我解决这个问题吗?
谢谢!
解决方法:
这帮助我做同样的事情.只需先转换为字节数组即可.
http://jamessdixon.wordpress.com/2013/10/01/handling-images-in-webapi/
您可以将图像包含在JSON有效负载中,如下所示:
public class Person
{
public Int32 PersonId { get; set; }
public String FirstName { get; set; }
public byte[] Image { get; set; }
}
或者您可以将imageUri包含在JSON有效负载中,如下所示:
public class Person
{
public Int32 PersonId { get; set; }
public String FirstName { get; set; }
public String ImageUri { get; set; }
}
您可以像这样将bitmapimage转换为字节数组;
public static byte[] ConvertToBytes(BitmapImage bitmapImage)
{
using (var ms = new MemoryStream())
{
var btmMap = new WriteableBitmap
(bitmapImage.PixelWidth, bitmapImage.PixelHeight);
// write an image into the stream
btmMap.SaveJpeg(ms, bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);
return ms.ToArray();
}
}
标签:serialization,bitmap,xml-serialization,windows-8,c 来源: https://codeday.me/bug/20191122/2063011.html