图片转Base64与Base64解码的C#实现

需积分: 27 15 下载量 193 浏览量 更新于2024-09-09 收藏 3KB TXT 举报
本文档主要介绍了在IT开发中常见的图片和Base64编码之间的相互转换操作,这对于处理上传图片和从API接口接收Base64编码的图片数据非常实用。以下是两个关键方法的详细解释: 1. 图片转换为byte数组(ImgToByte方法) 这个方法用于将`Image`对象转换为字节数组,以便于在网络上传输或存储。首先,创建一个`MemoryStream`对象来临时存储图像数据,然后使用`Save`方法将图片保存到这个流中,指定为JPEG格式(也可以根据需要调整格式)。最后,调用`GetBuffer`获取内存中的原始字节数据,并将其返回。 ``` public static byte[] ImgToByte(Image img) { try { using (MemoryStream ms = new MemoryStream()) { byte[] imageData = null; img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); // 可以根据需要替换为其他格式 imageData = ms.GetBuffer(); return imageData; } } catch (Exception ee) { MessageBox.Show(ee.ToString()); return null; } } ``` 2. 图片转换为Base64字符串(ImageToBytes方法) 这个方法与前一个相反,它接受一个`Image`对象,根据其原始格式(如JPEG、PNG、BMP、GIF或ICO)将其保存到新的`MemoryStream`中,并读取整个流的内容为字节数组。然后,这些字节被编码成Base64字符串。方法通过检查不同格式的条件语句,确保正确的编码方式。 ``` public static string ImageToBytes(Image image) { ImageFormat format = image.RawFormat; using (MemoryStream ms = new MemoryStream()) { if (format == ImageFormat.Jpeg) { image.Save(ms, ImageFormat.Jpeg); } // ... 其他格式的处理逻辑 byte[] buffer = new byte[ms.Length]; // 将内存流位置重置到起始位置,以读取完整数据 ms.Seek(0, SeekOrigin.Begin); ms.Read(buffer, 0, buffer.Length); // 将字节数组转换为Base64字符串并返回 return Convert.ToBase64String(buffer); } } ``` 这两个方法在Web开发中常用于处理前端上传图片后将其转换为Base64发送到服务器,或者服务器接收到Base64编码的图片后,将其反序列化回原始图片格式。通过这样的转换,可以简化数据传输,减少网络带宽需求,特别是在移动设备或性能受限的环境中。