2017-06-21 54 views
0

缓冲我想从Gdiplus::Image 这里提取像素缓冲区是我的代码:提取像素从图像GDI +

Gdiplus::Bitmap bitmap(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), BPP4 * GetSystemMetrics(SM_CXSCREEN), PixelFormat32bppARGB, data); 

Gdiplus::Image *pThumbnail = bitmap.GetThumbnailImage(mWidthResolutionSelected, mHeightResolutionSelected, NULL, NULL); 

GetThumbnailImagepThumbnail规模后,如何获得像素缓冲区? 谢谢

回答

0

您将pThumbnail转换为位图*,然后使用LockBits方法获取包含Scan0字段的BitmapData对象,该字段是指向像素数据的指针。完成后别忘记调用UnlockBits。

+0

感谢它的工作!但我正面临着一个问题。为什么图像显示有一些错误的像素? – DevAndroid

+0

没有看到有什么问题,我不知道,但你需要知道,行可能被填充到4字节的边界。 Stride属性可以帮助您查找每行的开头并跳过填充。 –

+0

我正在拍摄我的桌面截图,然后我得到了1920x1080分辨率的字节缓冲区(rgba)。 我将这个字节缓冲区传递给GetThumbnailImage函数,以便在1280x720中进行缩放。当我再次绘制图像时,我在桌面上的某些窗口上显示了错误的像素。例如:文件浏览器没有白色像素我在缩放之后有黑色像素...这太奇怪了...... – DevAndroid