我建议只“将位图保存到文件”并仅序列化图像文件名。
但是,如果您必须序列化位图,只需将位图作为 byte[] 保存到 MemoryStream 中。
byte[] byteArray;
using (MemoryStream stream = new MemoryStream())
{
Image.Save(stream, ImageFormat.Bmp);
byteArray = stream.ToArray();
}
更新:
通过图像路径序列化您的图像。
private string m_imagePath;
public Image Image { get; private set; }
public string ImagePath
{
get { return m_imagePath; }
set
{
m_imagePath = value;
Image = Image.FromFile(m_imagePath);
}
}
更新:
[JsonObject(MemberSerialization.OptIn)]
public class MyClass
{
private string m_imagePath;
[JsonProperty]
public string Name { get; set; }
// not serialized because mode is opt-in
public Image Image { get; private set; }
[JsonProperty]
public string ImagePath
{
get { return m_imagePath; }
set
{
m_imagePath = value;
Image = Image.FromFile(m_imagePath);
}
}
}
如您所见,这里有一个 json 对象,该对象具有 Opt-In 属性,这意味着您需要指定要序列化的属性。
这个演示对象有一个被序列化的 Name 属性,一个被序列化的 ImagePath 属性。
但是,Image 属性未序列化。
当您反序列化对象时,图像将加载,因为 ImagePath 设置器具有所需的功能。
我希望这会有所帮助,我对其进行了测试,并且可以正常工作。
喜欢就评价。祝你好运!