C#将图片转换二进制保存至Xml

本文介绍了一种将图片转换成二进制数据并保存为XML文件的方法。通过此方法,可以实现图片数据的方便传输和减少出错几率。文章提供了完整的C#代码实现,包括创建XML文档、图片转换和从XML中读取图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

今天看了篇将图片转为二进制保存至xml的文章,感觉这种方法还是有些用处的,虽然转为xml后文件反而比原图片大了。但是xml毕竟方便传输,并且出错的机会也小一些。贴代码看看。
说明:
TPFileName.XmlName——xml的路径和名称。

TPFileName.PictureName——原图片的路径和名称。

TPFileName.XmlPictureName——xml转换的图片的路径和地址。

 public class TPMainFormManager      {          static bool CreateXmlDocument()          {              try              {                  if (File.Exists(TPFileName.XmlName))                  {                      File.Delete(TPFileName.XmlName);                  }                    XmlTextWriter xmlTextWriter = new XmlTextWriter(TPFileName.XmlName, Encoding.UTF8);                    xmlTextWriter.Formatting = Formatting.Indented;                    xmlTextWriter.WriteStartDocument();                    xmlTextWriter.WriteStartElement("PictureItems");                    xmlTextWriter.WriteEndElement();                    xmlTextWriter.WriteEndDocument();                    xmlTextWriter.Close();                    return true;              }              catch (Exception ex)              {                  Debug.Assert(false, ex.Message);                    return false;              }          }            public static void ChangePicToXml()          {              if (CreateXmlDocument())              {                  XmlDocument myXmlDoc = new XmlDocument();                    myXmlDoc.Load(TPFileName.XmlName);                    XmlElement xmlElement = myXmlDoc.CreateElement("image");                    FileStream fileStream = new FileStream(TPFileName.PictureName, FileMode.Open);                    BinaryReader binaryReader = new BinaryReader(fileStream);                    byte[] imageBuffer = new byte[binaryReader.BaseStream.Length];                    binaryReader.Read(imageBuffer, 0, Convert.ToInt32(binaryReader.BaseStream.Length));                    string textString = System.Convert.ToBase64String(imageBuffer);                    fileStream.Close();                    binaryReader.Close();                    XmlText text = myXmlDoc.CreateTextNode(textString);                    myXmlDoc.DocumentElement.AppendChild(xmlElement);                    myXmlDoc.DocumentElement.LastChild.AppendChild(text);                    myXmlDoc.Save(TPFileName.XmlName);              }          }            public static Image GetXmlPicture()          {              int readByte = 0;                int bytesToRead = 1024;                XmlTextReader xmlTextReader = new XmlTextReader(TPFileName.XmlName);                FileStream fileStream = new FileStream(TPFileName.PictureName, FileMode.Create);                BinaryWriter binaryWriter = new BinaryWriter(fileStream);                byte[] base64buffer = new byte[bytesToRead];                while (xmlTextReader.Read())              {                  if (xmlTextReader.NodeType == XmlNodeType.Element && xmlTextReader.Name == "image")                  {                        do                      {                          readByte = xmlTextReader.ReadBase64(base64buffer, 0, bytesToRead);                            binaryWriter.Write(base64buffer, 0, readByte);                        } while (bytesToRead <= readByte);                  }              }                binaryWriter.Flush();                binaryWriter.Close();                fileStream.Close();                xmlTextReader.Close();                Image image = Image.FromFile(TPFileName.PictureName);                return image;          }      }

原图:
 
Xml转换图片后
   
详细工程:http://download.youkuaiyun.com/detail/yysyangyangyangshan/4082253

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值