相关疑难解决方法(0)

使用LockBits从内存创建的GDI +泛型错误保存位图

根据我在SO和网络上的研究,保存位图时的GDI +泛型错误显然是一个常见问题.给出以下简化的代码段:

byte[] bytes = new byte[2048 * 2048 * 2];

for (int i = 0; i < bytes.Length; i++)
{
    // set random or constant pixel data, whatever you want
}

Bitmap bmp = new Bitmap(2048, 2048, PixelFormat.Format16bppGrayScale);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, 2048, 2048), ImageLockMode.ReadWrite, bmp.PixelFormat);
System.Runtime.InteropServices.Marshal.Copy(bytes, 0, bmpData.Scan0, 8388608);
bmp.UnlockBits(bmpData);
bmp.Save(@"name.bmp");
Run Code Online (Sandbox Code Playgroud)

这导致0x80004005一般错误.通常的原因据说是锁定组件,但我在这里看不到任何东西.我只是瞎了吗?我保存的路径存在,当然,只创建一个空的bmp文件(0B).

背景:我从使用C++/CLI包装器传输到.NET的相机驱动程序获取像素数据,因此上面的Bitmap对象由函数调用返回.但是,由于这个小例子已经失败,我猜这个适配器没有任何问题.

任何建议都非常感谢!

c# system.drawing gdi+

8
推荐指数
1
解决办法
3008
查看次数

标签 统计

c# ×1

gdi+ ×1

system.drawing ×1