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