当前位置: 移动技术网 > IT编程>开发语言>c# > c# Base64编码和图片的互相转换代码

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

事出有因

         我们已经做了一个编辑器,这个编辑器可以以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;
    }

运行结果

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网