c# rgb24格式的数组转为图像
时间: 2023-12-14 22:00:05 浏览: 83
C#中关于视频YUV格式与RGB24格式之间的相互转换
3星 · 编辑精心推荐
在C#中,可以使用 `Bitmap` 类来创建和操作像,可以通过以下步骤将 RGB24 格式的数组转换为图像:
1. 根据给定的宽度和高度创建一个 `Bitmap` 对象。
2. 通过 `Bitmap.LockBits()` 方法获取 `BitmapData` 对象,然后通过 `Marshal.Copy()` 方法将 RGB24 数组复制到 `BitmapData.Scan0` 指针指向的内存区域。
3. 使用 `Bitmap.UnlockBits()` 方法释放 `BitmapData` 对象并更新 `Bitmap` 对象。
下面是一个示例代码:
```csharp
public static Bitmap RGB24ToBitmap(byte[] rgb24Data, int width, int height)
{
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, bmp.PixelFormat);
Marshal.Copy(rgb24Data, 0, bmpData.Scan0, rgb24Data.Length);
bmp.UnlockBits(bmpData);
return bmp;
}
```
使用时,只需要将 RGB24 格式的数组、宽度和高度传递给 `RGB24ToBitmap` 方法即可生成相应的图像:
```csharp
byte[] rgb24Data = ...; // 假设已经有了 RGB24 格式的数组
int width = ...; // 图像宽度
int height = ...; // 图像高度
Bitmap bmp = RGB24ToBitmap(rgb24Data, width, height);
```
注意:在使用 `Marshal.Copy()` 方法时,需要确保 RGB24 数组的长度与图像的总像素数相等,否则可能会出现数组越界等异常。
阅读全文