Graphics 从图像Gdi提取像素缓冲区+;

Graphics 从图像Gdi提取像素缓冲区+;,graphics,scale,gdi+,pixels,Graphics,Scale,Gdi+,Pixels,我想从Gdiplus::Image 这是我的密码: Gdiplus::Bitmap bitmap(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), BPP4 * GetSystemMetrics(SM_CXSCREEN), PixelFormat32bppARGB, data); Gdiplus::Image *pThumbnail = bitmap.GetThumbnailImage(mWidthResolutionS

我想从
Gdiplus::Image
这是我的密码:

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

Gdiplus::Image *pThumbnail = bitmap.GetThumbnailImage(mWidthResolutionSelected, mHeightResolutionSelected, NULL, NULL);
如何从
pThumbnail
获取缩放后的像素缓冲区?
感谢您将pThumbnail强制转换为位图*,然后使用LockBits方法获取BitmapData对象,该对象包含Scan0字段,该字段是指向像素数据的指针。完成后别忘了调用解锁位。

谢谢,它成功了!但我面临一个问题。。为什么图像上显示了一些错误的像素?在看不到错误的情况下,我无法判断,但您需要注意的是,这些行可能被填充到4字节边界上。Stride属性可以帮助您定位每行的开头并跳过填充。我正在拍摄桌面的屏幕截图,然后获得1920x1080分辨率的字节缓冲区(rgba)。我将这个字节缓冲区传递给函数GetThumbnailImage,以便在1280x720中对其进行缩放。当我再次绘制图像时,我在桌面的某些窗口上有错误的像素。。例如:文件浏览器没有白色像素,我在缩放后有黑色像素。。。真奇怪。。。