2017-06-21 1 views
0

Ich mag würde Pixelpuffer von Gdiplus::Image hier extrahieren ist mein Code:Extract Pixel von Bild Gdi Puffer +

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

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

Wie Pixelpuffer nach der Skala mit GetThumbnailImage von pThumbnail zu bekommen? Danke

Antwort

0

Sie werfen pThumbnail zu einem Bitmap * und dann verwenden Sie die LockBits-Methode, um ein BitmapData-Objekt abzurufen, das das Scan0-Feld enthält, das ein Zeiger auf die Pixeldaten ist. Vergessen Sie nicht, UnlockBits aufzurufen, wenn Sie fertig sind.

+0

Danke, es hat funktioniert! Aber ich habe ein Problem. Warum hat das Bild einige falsche Pixel auf dem Display? – DevAndroid

+0

Ohne zu sehen, was falsch ist, kann ich nicht sagen, aber Sie müssen wissen, dass die Zeilen aufgefüllt werden können, um auf 4-Byte-Grenzen zu gehen. Mit der Eigenschaft "Stride" können Sie den Anfang jeder Zeile lokalisieren und die Auffüllung überspringen. –

+0

Ich mache einen Screenshot von meinem Desktop, dann bekomme ich den Byte-Puffer (rgba) in 1920x1080 Auflösung. Ich übergebe diesen Byte-Puffer an die Funktion GetThumbnailImage, um sie in 1280x720 zu skalieren. Wenn ich das Bild neu zeichne, habe ich falsche Pixel auf einigen Fenstern des Desktops. Zum Beispiel: der Datei-Explorer statt weiße Pixel habe ich schwarze Pixel nach der Skala ... Das ist so komisch ... – DevAndroid