Serialize a Bitmap in C#/.NET to XML

后端 未结 4 1439
悲&欢浪女
悲&欢浪女 2020-11-27 06:12

I want to XML-Serialize a complex type (class), that has a property of type System.Drawing.Bitmap among others.

    /// <         


        
4条回答
  •  长情又很酷
    2020-11-27 06:26

    You can also to implement ISerializable and to use SerializationInfo to deal manually with your bitmap content.

    EDIT: João is right: Correct way to deal with XML serialization is to implement IXmlSerializable, not ISerializable:

    public class MyImage : IXmlSerializable
    {
        public string Name  { get; set; }
        public Bitmap Image { get; set; }
    
        public System.Xml.Schema.XmlSchema GetSchema()
        {
            throw new NotImplementedException();
        }
    
        public void ReadXml(System.Xml.XmlReader reader)
        {
            throw new NotImplementedException();
        }
    
        public void WriteXml(System.Xml.XmlWriter writer)
        {
            writer.WriteStartElement("Name");
            writer.WriteString(this.Name);
            writer.WriteEndElement();
    
            using(MemoryStream ms = new MemoryStream())
            {
                this.Image.Save(ms, ImageFormat.Bmp );
                byte[] bitmapData = ms.ToArray();
                writer.WriteStartElement("Image");
                writer.WriteBase64(bitmapData, 0, bitmapData.Length);
                writer.WriteEndElement();
            }
        }
    }
    

提交回复
热议问题