欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c# Base64编码和图片的互相转换代码

程序员文章站 2024-02-17 08:39:52
事出有因          我们已经做了一个编辑器,这个编辑器可以以xml格式存储一些信息...

事出有因

         我们已经做了一个编辑器,这个编辑器可以以xml格式存储一些信息。在存储图片信息时我们碰到了一些问题。我们本来在xml信息中存储的是图片的路径,然而一旦客户把这个信息copy到其他电脑上而没有同时copy相关的图片时,就会出现一些问题。
         后来,我们把图片数据转换为base64编码,替代了原先存储图片路径的方式。

转换流程

将图片转化为base64字符串的流程是:首先使用binaryformatter将图片文件序列化为二进制数据,然后使用convert类的tobase64string方法。将base64字符串转换为图片的流程正好相反:使用convert类的frombase64string得到图片文件的二进制数据,然后使用binaryformatter反序列化方法。

/// <summary>
    /// 将图片数据转换为base64字符串
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void tobase64(object sender, eventargs e)
    {
      image img = this.picturebox.image;
      binaryformatter binformatter = new binaryformatter();
      memorystream memstream = new memorystream();
      binformatter.serialize(memstream, img);
      byte[] bytes = memstream.getbuffer();
      string base64 = convert.tobase64string(bytes);
      this.richtextbox.text = base64;
    }

    /// <summary>
    /// 将base64字符串转换为图片
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void toimage(object sender, eventargs e)
    {
      string base64 = this.richtextbox.text;
      byte[] bytes = convert.frombase64string(base64);
      memorystream memstream = new memorystream(bytes);
      binaryformatter binformatter = new binaryformatter();
      image img = (image)binformatter.deserialize(memstream);
      this.picturebox.image = img;
    }

运行结果

c# Base64编码和图片的互相转换代码

c# Base64编码和图片的互相转换代码