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

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

2013-04-20 22:24 393 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: