图片转Base64与Base64解码的C#实现
需积分: 27 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编码的图片后,将其反序列化回原始图片格式。通过这样的转换,可以简化数据传输,减少网络带宽需求,特别是在移动设备或性能受限的环境中。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-10-21 上传
2023-11-13 上传
2015-07-20 上传
2019-01-03 上传
snowdenoliver
- 粉丝: 0
- 资源: 6
最新资源
- aggregate_resources:与使用传统循环相比,此仓库包含一个汇总参数示例。 该演示是使用eos_vlan模块在Arista vEOS上完成的
- spatial_rcs
- socket_handshake
- CubeApi
- 文件时间批量修改工具(指定时间随机)
- ncomatlab代码-x5chk2021:x5chk2021
- python-math-solver:用Python编写的定理证明者求解器
- laravel-grid-app:Laravel应用程序展示leantonylaravel-grid软件包功能
- Tag-Based-File-Manager:用python编写的基于标签的文件管理器
- kxmlrpcclient:KXMLRPCClient-帮助使用XML-RPC API的库
- ProjetosJava
- 英语-
- ncomatlab代码-pyldas:土地数据同化系统(LDAS)的python包
- dictionary-app
- COSC-473-项目
- ExampleOfiOSLiDAR:iOS ARKit LiDAR的示例