我正在尝试将原始 RGB24 数据数组转换为 C# 中的位图,但这样做时遇到了麻烦。
这是对应的代码:
using System.Runtime.InteropServices;
byte[] frame;
//... code
frame = new byte[1280 * 960];
// code to get the frame
System.Runtime.InteropServices.GCHandle pinnedArray =
GCHandle.Alloc(frame, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();
Bitmap bmp = new Bitmap(width, height, 3 * width,
PixelFormat.Format24bppRgb, pointer);
MemoryStream JPEGStream = new MemoryStream ();
bmp.Save(filepath, System.Drawing.Imaging.ImageFormat.Bmp);**
我得到一个
“System.Drawing.dll 中发生了‘System.AccessViolationException’类型的未处理异常”
使用上面的代码。
但是,如果我改变:
Bitmap bmp = new Bitmap(width, height, stride,
PixelFormat.Format24bppRgb, pointer);
至
Bitmap bmp = new Bitmap(width/3, height/3, stride,
PixelFormat.Format24bppRgb, pointer);
我没有崩溃并获得 3 张图像,覆盖了总面积的 1/3。我应该得到的是覆盖整个 1280 X 960 区域空间的单个图像。