本文档主要介绍了在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编码的图片后,将其反序列化回原始图片格式。通过这样的转换,可以简化数据传输,减少网络带宽需求,特别是在移动设备或性能受限的环境中。
/// <summary>
/// 图像转换为二进制
/// </summary>
/// <param name="img"></param>
/// <returns></returns>
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;
}
}
二、图片转换为base64
方法一、
public static string ImageToBytes(Image image)
{
ImageFormat format = image.RawFormat;
using (MemoryStream ms = new MemoryStream())
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展