RGB-Array aus dem Bild in C # holen

8

Ich schreibe gerade eine C # -Implementierung eines kleinen Programms, das ich in Java geschrieben habe.

Ich hatte BufferedImage.getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) function in meiner Java-App verwendet. Aber ich konnte nicht genau eine Version davon in C # finden und ich bin nicht sicher, wie man es manuell schreibt.

    
thecodekid 20.01.2011, 13:01
quelle

5 Antworten

17

Es gibt keine direkte Entsprechung in .NET Framework zu dieser Methode. Wenn es sich bei Ihrem Abbild jedoch um eine System.Drawing.Bitmap handelt, können Sie die LockBits-Methode aufrufen. Dadurch wird eine BitmapData-Struktur zurückgegeben, die die Adresse der ersten Scanlinie enthält. Sie können es dann verwenden, um einen API-kompatiblen Wrapper zu erstellen. Ich gehe davon aus, dass Sie C # 3.5 oder höher verwenden. Daher verwende ich eine Erweiterungsmethode. Wenn Sie eine ältere Variante verwenden, ändern Sie diese in eine normale Methode, indem Sie das "This" aus dem Bitmap-Argument löschen:

%Vor%

Dieser Wrapper kann nun wie folgt aufgerufen werden:

%Vor%

Ich hoffe, das hilft und willkommen bei .NET!

    
Andy Hopper 20.01.2011, 14:37
quelle
6

Sie würden Bitmap.LockBits verwenden, um direkten Zugriff auf die Pixel in einer Bitmap zu erhalten. Hier ist eine Beispielimplementierung, die eine Scanlinie aus der übergebenen Bitmap als int []:

zurückgibt %Vor%     
Hans Passant 20.01.2011 13:16
quelle
2

Ich denke, der nächste ist Bitmap.GetPixel(x,y) , der an einem Punkt eine einzelne Pixelfarbe zurückgibt. Um die Java-Funktion zu simulieren, müssen Sie einen Helfer schreiben.

    
Felice Pollano 20.01.2011 13:04
quelle
2

Möglicherweise müssen Sie

überprüfen

Überprüfen Sie auch Konvertieren eines Pixel-Arrays in ein Bild in C # .

    
Incognito 20.01.2011 13:09
quelle
1

Es hängt davon ab, wie schnell Sie es tun müssen.

Bitmap hat GetPixel() Methode, die für ein Pixel gut funktioniert.

Wenn Sie eine schnelle Bildverarbeitung benötigen, müssen Sie LockBits verwenden, wo Sie ein Beispiel finden können.

%Vor%     
Aliostad 20.01.2011 13:05
quelle

Tags und Links