C++ 将HBITMAP转换为字节数组
我正在使用一些ScannerAPI,它返回BMP格式图像的句柄(文档中也这么说)。我试图以某种方式从此句柄获取位图,但例如,此代码不起作用:C++ 将HBITMAP转换为字节数组,c++,winapi,gdi,C++,Winapi,Gdi,我正在使用一些ScannerAPI,它返回BMP格式图像的句柄(文档中也这么说)。我试图以某种方式从此句柄获取位图,但例如,此代码不起作用: HANDLE handle = getHandleFromScanner(); BITMAP bitmap; int u = GetObject(handle, sizeof(BITMAP), &bitmap); u在这里是0,getLastError()返回6,这意味着句柄无效。但是除了通过getHandleFromScanner()函数之外,
HANDLE handle = getHandleFromScanner();
BITMAP bitmap;
int u = GetObject(handle, sizeof(BITMAP), &bitmap);
u在这里是0,getLastError()返回6,这意味着句柄无效。但是除了通过getHandleFromScanner()
函数之外,我无法获得任何其他句柄
是否应该使用此句柄进行一些转换?有什么想法吗?使用位图句柄的正确方法是什么?或者存在任何简单的api?我通过谷歌找到的样本对我没有帮助
非常感谢。你试过了吗?这应该是可行的,但您也需要设备上下文。您可能总是想调用句柄,看看它是否真的返回HBITMAP。谢谢各位
句柄似乎是图像本身,因此以下代码解决了该问题:
char* pImage = NULL;
HANDLE hImage= getHandleFromScanner();
pImage = (char *)GlobalLock(hImage);
// pImage now contains the bytes of the image
如果有人需要它,扫描仪是Olivetti PR2 plus扫描仪。谢谢。GetObjectType()为句柄返回0,这意味着它无法识别句柄类型。扫描器似乎返回了一些错误格式的图像。如果它真的返回了位图,那么它应该返回一个HBITMAP,而不是句柄。继续浏览API以了解如何使用此句柄。