0

我必须从字节数组中加载一个 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);
}
4

0 回答 0