2017-06-21 53 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