zoukankan      html  css  js  c++  java
  • c# 图片如何保存到xml文件

    首先我们做些准备工作:

    1.在c盘下创建一个文件夹并命名为picture。里面存放一张图片(任意格式的一张)。c:/picture/001.jpg
    2.在c盘下创建一个文件夹并命名为picture2.里面存放一个xml文件。c:/picture1/11.xml
    在xml文件中加一个根节点(这里是为了操作的方便直接在文件中添加的,你也可以在你的代码中动态的添 加)如<picture></picture>
    接下来的程序就是实现将图片001.jpg通过base64编码后储存到11.xml文件中。
    先在form中拖进一个button。双击触发click事件。事件代码如下:
    View Code
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Windows.Forms;
     9 using System.IO;
    10 using System.Xml;
    11 namespace 图片存储xml文件
    12 {
    13     public partial class Form1 : Form
    14     {
    15         public Form1()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20 
    21         private void button1_Click(object sender, EventArgs e)
    22         {
    23             try
    24             {
    25                 XmlDocument myxmldoc = new XmlDocument();
    26                 myxmldoc.Load("C:/picture1/11.xml");
    27                 XmlElement elem = myxmldoc.createElement_x("image");
    28                 // 打开图片文件,利用该图片构造一个文件流
    29                 FileStream fs = new FileStream("C:/picture/001.jpg", FileMode.Open);
    30                 // 使用文件流构造一个二进制读取器将基元数据读作二进制值
    31                 BinaryReader br = new BinaryReader(fs);
    32                 byte[] imagebuffer = new byte[br.BaseStream.Length];
    33                 br.Read(imagebuffer,0,Convert.ToInt32(br.BaseStream.Length));
    34                 string textstring = System.Convert.ToBase64String(imagebuffer);
    35                 fs.Close();
    36                 br.Close();
    37                 XmlText text = myxmldoc.CreateTextNode(textstring);
    38                 myxmldoc.DocumentElement.AppendChild(elem);
    39                 myxmldoc.DocumentElement.LastChild.AppendChild(text);
    40 
    41 
    42                 myxmldoc.Save("C:/picture1/11.xml");
    43 
    44 
    45                 MessageBox.Show("读写结束!");
    46             }
    47             catch (Exception  ex)
    48             {
    49                 MessageBox.Show(ex.ToString());
    50             }
    51         }
    52     }
    53 }
    运行后打开c盘下的picture1文件夹,双击11.xml文件。看到里面除了你开始添加的picture标签以外还多出了image标签,标签里面都是你看不懂的字母。说明你已经转换成功了。
     
    图片存好以后你需要把它读出来。以下是读出的方法,也就是解码的方法:同样的,在form里面添加一个button,双击产生click事件,事件代码如下:
    View Code
     1 private void button2_Click(object sender, EventArgs e)
     2         {
     3             try
     4             {
     5                 int readbyte = 0;
     6                 int bytestoread = 1044;
     7                 XmlTextReader xmltxtrd = new XmlTextReader("C:/picture1/11.xml");
     8                 FileStream fs = new FileStream("C:/picture1/002.jpg", FileMode.Create);
     9                 BinaryWriter bw = new BinaryWriter(fs);
    10                 byte[] base64buffer = new byte[bytestoread];
    11                 while (xmltxtrd.Read())
    12                 {
    13                     if (xmltxtrd.NodeType == XmlNodeType.Element && xmltxtrd.Name == "image")
    14                     {
    15                         do
    16                         {
    17                             readbyte = xmltxtrd.ReadBase64(base64buffer, 0, bytestoread);
    18                             bw.Write(base64buffer, 0, readbyte);
    19                         }
    20                         while (bytestoread <= readbyte);
    21                     }
    22                 }
    23                 bw.Flush();
    24                 bw.Close();
    25                 fs.Close();
    26                 xmltxtrd.Close();
    27                 
    28                 MessageBox.Show("读写结束!");
    29             }
    30             catch (Exception ex)
    31             {
    32                 MessageBox.Show(ex.ToString());
    33             }
    34         }
    运行后打开c盘下的picture1文件夹,你可以看到里面多了一个002.jpg的图像文件,打开看看,这是你刚刚在picture文件下的那张图片。
     
    个人觉的这个方法也适合wpf,试试吧!~
  • 相关阅读:
    SpringCloud : yml文件配置 获取系统环境变量的值
    SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案
    SpringCloud : Feign 不捆绑远程应用名称, 实现服务应用名称传入,调用通用自动化
    SpringCloud : Feign 使用 FastJson 解析数据
    Mybatis中在log日志或控制台打印执行的sql
    iOS 基于 itemServices 进行本地安装 ipa 应用安装包
    MySQL5.5 数据热备份
    如何在 Fiddler Script 中 自定义 修改 Request 、 Response
    Dubbo 分布式 日志 追踪
    shell脚本并发执行
  • 原文地址:https://www.cnblogs.com/rocblog/p/3030492.html
Copyright © 2011-2022 走看看