Die Verwendung von getPixels() von Android Bitmap-Klasse und wie es zu benutzen
Ich versuche zu tun, etwas Bildverarbeitung in Android.
Ich brauche, um ein Stück der pixel einer bitmap.
So habe ich versucht, verwenden Sie eine der Bitmap-Klasse Methode getPixels().
Jedoch, wie es scheint, ich bin nicht mit richtig oder verstehe ich das falsch der einzige Zweck der Methode Verhalten.
Zum Beispiel, ich mache die folgenden Schritte, um pixel-information von 10 von 10-region eine bitmap aus einer beliebigen Lage(bitmap-Koordinate) x, y.
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
int[] pixels = new int[100];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), x, y, 10, 10);
Und ich bin immer ArrayIndexOutOfBoundsException.
Ich habe schon Googeln, um zu sehen, was ich falsch mache, aber ich bin ratlos.
Die meisten Beispiele oder Fragen bezüglich der Verwendung von getPixels() sind in der Regel für den Fall der Extraktion von pixel-information des gesamten Bildes. Damit die Größe des int-array ist in der Regel bitmap.getWidth()*bitmap.getHeight(), x-und y-Werte sind 0, 0,, und die Breite ist die Höhe der bitmap die Breite und Höhe.
Ist Bitmap getPixels() nicht für den Zweck der meine Verwendung(immer ein Stück von pixel-Daten einer sub-region, in der die bitmap)? Oder verwende ich es falsch? Gibt es eine alternative Möglichkeit, dies zu tun, vielleicht mit einer anderen Klasse?
Ich würde es schätzen, wenn jemand etwas dazu zu sagen. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
getPixels() liefert die komplette int[] array der Quell-bitmap, also initialisiert werden mit der gleichen Länge wie die Quell-bitmap, Höhe x Breite.
Mit so
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, 10, 10);
tatsächlich schnappen Sie sich die gewünschten Pixel in der bitmap, und füllt den rest des Arrays mit 0. Also mit einem 10 x 10 Teil eines bitmap-100 x 10, beginnend bei 0,0 die ersten 100 Werte wäre der gewünschte int-Wert, der rest wäre 0.Können Sie immer versuchen mit
Bitmap.createBitmap()
zu erstellen Sie Ihre Teilmenge bitmap, dann verwenden SiegetPixels()
auf Ihre neue Bitmap zu greifen, die komplette Palette.Meisten Jungs wollen, verwenden Sie getPixels() immer eine bestimmte region Pixel, aber eigentlich ist es wieder eine volle Größe der Ursprung bitmap. Gültige region platziert Links in der Ecke und die anderen sind durchscheinende Farben. Ich schlage vor, Sie verwenden Android Studio den debug-Modus zu sehen, die visual Pixeln durch anlegen einer bitmap.
Und das folgende ist meine version von getPixels (), um bestimmte Pixel region: