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.
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!
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% 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.
Möglicherweise müssen Sie
überprüfenÜberprüfen Sie auch Konvertieren eines Pixel-Arrays in ein Bild in C # .
Tags und Links c# image image-processing rgb