c#中如何用xml来保存并提取图片

22 篇文章 0 订阅
1 篇文章 0 订阅
private void button1_Click(object sender, EventArgs e)
 
         {
 
              try{
 
              int readByte = 0;        //
 
              int bytesToRead = 100;
 
              string fileName = "../../yangm.xml";
 
              // 打开图片文件,利用该图片构造一个文件流
 
              FileStream fs = new FileStream("../../ym.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();
 
              }
 
              catch(Exception ex)
 
              {
 
                   MessageBox.Show(ex.ToString());
 
              }
 
}

上边的代码是从网上找到的,下边的代码的功能为如何从xml文件中把保存好的图片提取出来

private void button2_Click(object sender, EventArgs e)
 
         {
 
XmlDocument doc = new XmlDocument();
 
              //XmlNode d=new xmlnode
 
              //   装入指定的XML文档  

              doc.Load("../../yangm.xml");
 
              XmlNodeList NodeList = doc.GetElementsByTagName("image");//得到节点列表
 
              XmlNode ImageNode = NodeList[0];//得到该节点
 
              string PicByte = ImageNode.InnerXml;//得到节点内的二进制代码
 
              byte[] b = Convert.FromBase64String(PicByte);//转化为byte[]
 
              System.IO.MemoryStream sm = new MemoryStream();
 
 
 
              sm.Write(b, 0, b.Length);//写到流中
 
              this.photo.Image = Image.FromStream(sm);//picbox


base64简介

Base64编码把3个8位字节(3*8=24)转化为4个6位字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的格式

base64把字节码编程只包含a-zA-Z0-9+/这64个字符,所以称为base64


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值