如何从 Windows LPBITMAP 或 HBITMAP 获取实际的字节数组?

How do I get the actual byte array from a Windows LPBITMAP or HBITMAP?

我正在构建一个非托管 windows C++ 项目,需要对 BITMAPS 进行一些分析。 该应用程序不是 windows 应用程序,而是一个 win32 库。

客户端应用程序会将 HBITMAP 或 LPBITMAP 传递到库中。

我需要访问底层字节数组[]以进行处理和分析。 如何从 BITMAP 中获取字节数组 []? (无需转到临时文件)。

我已经能够从 BITMP (.BMP) 文件执行此操作。 但在这些情况下,我需要使用 HBITMAP 和 LPBITMAP。

如何实现? (请记住,我 无权访问 windows HDC 等,因为这不是 windows 应用程序,库 运行 也不会结合 windows 应用)

这可以通过 opencv 库以某种方式完成吗?

谢谢, 约翰

如果您有 LPBITMAP,那么位已经存在,在 BITMAP::bmBits 中。 如果您有 HBITMAP,您可以使用 GetDIBits 来获取它们。