Ton*_*Nam 3 c# serialization xml-serialization
我正在创建一个非常基本的聊天应用程序 我用tcp连接建立聊天.我经常通过网络流发送序列化对象,因为以这种方式编程更简单.无论如何,如果我有一个class person{ public string name{get;set;} }那么它将是eassy序列化该类.当我包括一个public ImageSource Img {get;set;}我不能再序列化那个班级的人.
我序列化的方式是:
Person p = new Person();
p.name = \\some name
p.Img = \\ some image
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
x.Serialize(connection.stream, p);//here is when the problem comes. I am not able to serialize it if I include an Img
Run Code Online (Sandbox Code Playgroud)
您无法将图像序列化为XML,但可以将其保存到a MemoryStream并将二进制数据编码为base64.
string ImageToBase64(BitmapSource bitmap)
{
var encoder = new PngBitmapEncoder();
var frame = BitmapFrame.Create(bitmap);
encoder.Frames.Add(frame);
using(var stream = new MemoryStream())
{
encoder.Save(stream);
return Convert.ToBase64String(stream.ToArray());
}
}
BitmapSource Base64ToImage(string base64)
{
byte[] bytes = Convert.FromBase64String(base64);
using(var stream = new MemoryStream(bytes))
{
return BitmapFrame.Create(stream);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,base64在空间方面效率不高......如果可能的话,以二进制形式而不是XML格式传输图像会更好.
| 归档时间: |
|
| 查看次数: |
5504 次 |
| 最近记录: |