c# Base64编码和图片的互相转换代码
程序员文章站
2023-12-17 17:11:22
事出有因
我们已经做了一个编辑器,这个编辑器可以以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; }
运行结果