C# 从image对象获取字节数组
时间: 2023-08-30 16:12:13 浏览: 117
你可以使用Image类的Save方法将图像保存到内存流中,然后使用MemoryStream类的ToArray方法将内存流转换为字节数组。以下是示例代码:
```csharp
using System.IO;
// 从Image对象获取字节数组
public byte[] GetByteArrayFromImage(Image image)
{
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms.ToArray();
}
}
```
在这个示例中,我们将图像保存为PNG格式,并且使用了using语句来确保内存流被正确地释放。你可以根据需要更改图像的格式。
相关问题
C# 如何从image获取字节数组
可以使用以下代码将 Image 对象转换为字节数组:
```csharp
byte[] byteArray;
using (MemoryStream stream = new MemoryStream())
{
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); // 可以根据需要替换为其他格式
byteArray = stream.ToArray();
}
```
其中,`Save` 方法将 Image 对象保存到一个流中,然后使用 `ToArray` 方法将流中的数据转换为字节数组。
C# Image类型转字节数组byte[]
在C#中,将`Image`类型的对象转换成`byte[]`数组,通常需要经过编码过程。这是因为`Image`本质上是一个表示图片的复杂数据结构,而我们想要的是二进制数据。以下是基本步骤:
1. 首先,你需要创建一个`Image`对象,可以是从文件加载的,或者通过其他途径获取。
```csharp
Image image = Image.FromFile("path_to_your_image.jpg");
```
2. 然后,你可以选择使用`System.Drawing.Imaging.ImageFormat`枚举指定保存的图像格式,比如常见的JPEG、PNG等,然后使用相应的Encoder对象进行编码。
```csharp
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imageData = ms.ToArray();
}
```
或者直接使用`GetThumbnailImage`方法获得压缩后的位图数据:
```csharp
byte[] imageData = image.GetThumbnailImage(Width, Height, null, IntPtr.Zero).ToArray();
```
这里假设`Width`和`Height`是你希望的缩放尺寸。
阅读全文