使用GetDIBits 的微软示例必须编写以下代码。我的问题是,为什么他们要创建一个新的bi项,而不是只在调用GetDIBits时使用bmpScreen ?:
// Get the BITMAP from the HBITMAP
GetObject(hbmScreen,sizeof(BITMAP),&bmpScreen);
BITMAPFILEHEADER bmfHeader;
BITMAPINFOHEADER bi;
bi.biSize = sizeof(BITMAPINFOHEADER);
如何从HBITMAP获得一个特定的像素RGB-值?我试着在StackOverflow读过类似的文章,但没有一个真正适合这个问题。下面的代码似乎得到了HBITMAP中另一个位置(而不是想要的位置)的RGB值。
int width = rc.right - rc.left;
int height = rc.bottom - rc.top;
HDC hdcSource = hdc; // the source device context
HBITMAP hSource = hbmp; // the bitmap selected into the device c
我已经用OleLoadPictre将图像读入LPPICTURE并在窗口中显示,但我真正需要做的是将图像转换为像素矩阵,我可以对其进行操作并保存回图像文件。
使用OleLoadPicture,我几乎能够读取所有主要的图像格式。如果我可以访问单个像素,我就可以遍历并提取所有像素。
在其他相关的问题中,人们建议使用像OpenCV这样的笨重的库和其他高度开发的库,它们可以做任何事情,但我更喜欢尽可能地保持我的解决方案的轻量级。我已经为我的像素写了一个基本的结构,我很高兴自己来做这个操作。
我一直在用Magic++查看ImageMagic库。这似乎很好,但如果有一个解决方案,只需使用Windows AP