您的位置:首页 > 编程语言 > C#

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

2012-02-22 20:07 411 查看
今天看了篇将图片转为二进制保存至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.csdn.net/detail/yysyangyangyangshan/4082253
本文出自 “西北白杨树” 博客,请务必保留此出处http://yangyoushan.blog.51cto.com/7229571/1276545
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: