从字节数组加载1bpp位图

时间:2012-05-15 15:06:37

标签: c# winapi bitmap handle

我必须从字节数组加载1bpp位图,以将其提供给外部组件。该组件需要一个位图句柄。

我尝试将其加载到Bitmap对象并提供bitmap.GetHBitmap()的结果,但看起来内部完成了一些奇怪的转换,结果位图不再是1bpp(当我提供时)组件的句柄,它抱怨位深度。)

当我使用Windows API函数LoadImage直接从文件加载位图时,它工作正常,但我不想从文件中读取它们,因为我已经将图像存储在内存中。将它们写入磁盘并再次读取它们是不必要的I / O,并且会使我的应用程序变得太慢。

如何获取具有字节数组中数据的位图的句柄?

修改

我尝试了这段代码,但它向我展示了两个不同的图像。它应该显示相同的图像。

IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(byte)) * imageData.Length);
try
{
    Marshal.Copy(imageData, 0, ptr, imageData.Length);
    handle = CreateBitmap(imgWidth, imgHeight, 1, 1, ptr);

    ShowImage(Image.FromHbitmap(handle));
    ShowImage(Image.FromStream(new MemoryStream(imageData)));
}
finally
{
    Marshal.FreeHGlobal(ptr);
}

0 个答案:

没有答案