Wie erhalten Sie die RGB-Werte von einer Bitmap auf einem Android-Gerät?
Möchte ich, um die RGB-Werte der bitmap in android, aber ich kann nicht dies tun, so weit. Mein Ziel ist, erhalten Sie die RGB-Werte für jedes pixel der bitmap. Gibt es eine spezielle Funktion für android oder etwas anderes ??
Auch Frage ich mich, brauche ich colorMatrix () - Funktion?
Es ist sehr wichtig für mein Projekt. Dank
InformationsquelleAutor der Frage barzos | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese vielleicht etwas spät, aber zu bereinigen, die Verwirrung, die mit der Nutzung von &0xff:
In Java ints sind 32 bits, so dass die (A)RGB-Werte für jedes pixel verpackt in 4 bytes.
In anderen Worten, ein pixel mit dem Wert R(123), G(93), B(49) = FF7B 5D31 in der ARGB_8888 Modell. Wobei Alpha = FF, R = 7B, G = 5D, B = 31. Aber diese gespeichert ist, als int, als -8692431.
So, zum extrahieren der Grün-Wert vom -8692431, benötigen wir eine Verschiebung der 5D um 8 bits nach rechts, wie Sie wissen. Dies gibt 00FF 7B5D. Also, wenn wir waren nur zu nehmen, dass der Wert, den wir Links liegen lassen würde mit 16743261 als unsere Grün-Wert. Also, wir bitweise und-Verknüpfung Wert mit der Maske 0xFF (entspricht 0000 00FF) und führt 00FF 7B5D wird 'maskiert' 0000 005D. So haben wir extrahierten unsere Grün-Wert von 93.
Können wir die Verwendung der gleichen Maske 0xFF für jede Extraktion, da die Werte haben sich alle verschoben, um Zugang zu den gewünschten zwei Byte als das niedrigstwertige. Damit die bisher vorgeschlagenen code von:
Wenn es macht es übersichtlicher, die Sie durchführen können, die äquivalente operation:
Kürze halber, werden die zusätzlichen 0EN gelöscht werden können, und es kann geschrieben werden als
Beachten Sie jedoch, dass alternative Farbmodelle verwendet werden können, wie RGB_555 die speichert jedes pixel nur 2 bytes, mit unterschiedlicher Genauigkeit für die RGB-Kanäle. So sollten Sie überprüfen, das Modell, das die bitmap ist mit vor der Durchführung der Extraktion, denn die Farben werden unterschiedlich gespeichert.
InformationsquelleAutor der Antwort QuackSaysHe
Dies ist wie ich bin versucht zu bekommen, dass Wert. Verwenden Sie die bitmap.getPixel (), um die entsprechende bitmap in
integer-array. Durch die bitweise rotation der Betrieb, wir erhalten die RGB-Werte.
InformationsquelleAutor der Antwort yogsma
Bitmap.getPixel(x, y)
gibt eine Ganzzahl, die die Farbton-Werte und der alpha-Wert, die in Sie eingebettet.InformationsquelleAutor der Antwort Cobbles
Einer for-Anweisung weniger 😀
InformationsquelleAutor der Antwort Wolf
Beliebigen Bitmap-Farbe-Handling
Lesen Sie über die verschiedenen Farbe Methoden hier, extrahieren Sie die Komponenten von Farbe aus einem pixel-int.
Möchten Sie möglicherweise wenden Sie einen filter auf die bitmap, und liefert ein byte-array. Andernfalls können Sie schneiden Sie das Beispiel unten, um die for-Schleife und Rollen durch die Pixel erzeugen das array von bytes.
InformationsquelleAutor der Antwort Cameron Lowell Palmer