zoukankan      html  css  js  c++  java
  • 将一个图片以二进制值的形式存入Xml文件中

    选择自 xinyuxin912 的 Blog

    将一个图片以二进制值的形式存入Xml文件中


    try
       {
        int readByte = 0;        //
        int bytesToRead = 100;       //数据缓冲区大小
        string fileName = "../../WriteXml.xml";   //要打开的文件
        //   this.textBox1.Text = string.Empty;           

        // 打开图片文件,利用该图片构造一个文件流
        FileStream fs = new FileStream("../../001.jpg",FileMode.Open);
        // 使用文件流构造一个二进制读取器将基元数据读作二进制值
        BinaryReader br = new BinaryReader(fs);

     
        XmlTextWriter xmlTxtWt = new XmlTextWriter(fileName,Encoding.UTF8);
        //输出设置 代码缩进
        xmlTxtWt.Formatting = Formatting.Indented;
        //   xmlTxtWt.Indentation = 4;

        //书写声明
        xmlTxtWt.WriteStartDocument();
        xmlTxtWt.WriteStartElement("picture","ContactDetails","http://www.deltabis.com/Contact");//定义命名空间
        xmlTxtWt.WriteStartElement("image");            //定义节点
        xmlTxtWt.WriteAttributeString("imageName","002.jpg");        //添加图片属性

        byte[] base64buffer = new byte[bytesToRead];          //开辟缓冲区
        do
        {
         readByte = br.Read(base64buffer,0,bytesToRead);      //将数据读入字节数组
         xmlTxtWt.WriteBase64(base64buffer,0,readByte);       //将数组中二进制值编码为Base64并写出到XML文件

        }while(bytesToRead <= readByte);

     
        xmlTxtWt.WriteEndElement();
        xmlTxtWt.WriteEndElement();
        xmlTxtWt.WriteEndDocument();

     
    //    xmlTxtWt.Flush();
        xmlTxtWt.Close();

        MessageBox.Show("读写结束!");

        //   this.textBox1.Text = ReadXml(fileName);
       }
       catch(Exception ex)
       {
        MessageBox.Show(ex.ToString());
       }
    ===========================================================================================

    选择自 xinyuxin912 的 Blog

    将图片读入到Dom中,并将其存为xml文件

    1、需要命名空间
    using System.Text;
    using System.IO;
    using System.Xml;
    2、文件夹中存在001.jpg图片
    3、生成一个docSave.xml文件

    //*********************************
       {
        XmlDocument myXmlDoc = new XmlDocument();
        myXmlDoc.LoadXml("<picture><name>picture</name></picture>");

        XmlElement elem = myXmlDoc.CreateElement("image");

        // 打开图片文件,利用该图片构造一个文件流
        FileStream fs = new FileStream("../../001.jpg",FileMode.Open);
        // 使用文件流构造一个二进制读取器将基元数据读作二进制值
        BinaryReader br = new BinaryReader(fs);

        byte[] imageBuffer = new byte[br.BaseStream.Length];

        br.Read(imageBuffer,0,Convert.ToInt32(br.BaseStream.Length));

        string textString = System.Convert.ToBase64String(imageBuffer);

        fs.Close();
        br.Close();

        XmlText text = myXmlDoc.CreateTextNode(textString);

        myXmlDoc.DocumentElement.AppendChild(elem);
        myXmlDoc.DocumentElement.LastChild.AppendChild(text);

        myXmlDoc.Save("../../docSave.xml");

        MessageBox.Show("读写结束!");
    catch(Exception ex)
       {
        MessageBox.Show(ex.ToString());
       }
    //************************************************
    //生成后的Xml文档
    //******

    <picture>
      <name>picture</name>
      <image>......</image>
    </picture>

    //*************************************************
    //测试上一程序
    //***********

    说明:读取docSave.xml中的image节点,将其存为图片格式002.jpg.

      try
       {
        int readByte = 0;
        int bytesToRead = 1044;
        XmlTextReader xmlTxtRd = new XmlTextReader("../../docSave.xml");
        FileStream fs = new FileStream("../../002.jpg",FileMode.Create);
        BinaryWriter bw = new BinaryWriter(fs);

        byte[] base64buffer = new byte[bytesToRead];
        while(xmlTxtRd.Read())
        {
         if (xmlTxtRd.NodeType == XmlNodeType.Element && xmlTxtRd.Name == "image")
         {
          do
          {
           readByte = xmlTxtRd.ReadBase64(base64buffer,0,bytesToRead);
           bw.Write(base64buffer,0,readByte);
          }
          while( bytesToRead<= readByte);
         }
        }

        bw.Flush();
        bw.Close();
        fs.Close();

        xmlTxtRd.Close();
        MessageBox.Show("读写结束!");
       }
      catch(Exception ex)
       {
        MessageBox.Show(ex.ToString());
       }

  • 相关阅读:
    在Android Studio中用Gradle添加Robolectric
    Windows环境下利用github快速配置git环境
    上传Android代码到Jcenter(解决了字符映射的问题)
    RecyclerView和ScrollView嵌套使用
    Android Java类编写规范+优化建议
    3.0之后在LinearLayout里增加分割线
    【转】Android Studio中通过快捷键来提取提取方法
    为什么Android应该根据屏幕分辨率来加载不同的图片文件
    JSON/XML格式化插件比较
    利用在线工具根据JSon数据自动生成对应的Java实体类
  • 原文地址:https://www.cnblogs.com/kentyshang/p/822472.html
Copyright © 2011-2022 走看看