序列化包含BitmapImage的类的方法:使用2inheritance的类?

当我的应用程序关闭时,我想序列化一些数据,使其在下次使用应用程序时持久化。 我选择使用Newtonsoft.JsonConverter序列化这些数据。 但是,我的class级中有一个BitmapImage,它无法序列化。

我有点困惑于此,因为我没有找到一个解决方案来保持我的BitmapImage进入我的类(我需要保留它)并能够序列化这个类。 我试图创建一个包含BitmapImage的inheritance类,但我不允许从我的基类创建一个隐式运算符。

我想在我的类中有一个对象,它可以用作Image绑定的源,并且能够序列化这个类。

我建议只将“将BitMap保存到文件”并仅序列化图像文件名。

但是,如果必须序列化位图,只需将位图以byte []的forms保存到MemoryStream中。

byte[] byteArray; using (MemoryStream stream = new MemoryStream()) { Image.Save(stream, ImageFormat.Bmp); byteArray = stream.ToArray(); } 

更新:

通过Image Path序列化您的图像。

 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 setter具有所需的function。

我希望这有帮助,我测试了它,它的工作原理。
如果你喜欢,请评价。 祝好运!