Der Weg, den ich in der Vergangenheit getan habe, ist, das Bild in das Dateisystem zu schreiben und es dann zu decodieren. Zugegeben, es ist ein wenig ineffizient, aber es ist funktional.
Dies erfordert eine Reihe von Schritten. Ich schlage vor, Sie lesen diese . Es beschreibt den Prozess der Aufnahme eines Bildes und speichert es im Dateisystem, das Sie tun müssen vor Sie können den Rest dieser Schritte tun.
Als nächstes müssen Sie BitmapFactory
verwenden, um das Bild zu dekodieren, das Ihnen eine Instanz von Bitmap
geben wird, mit der Sie alle möglichen Dinge tun können (dokumentiert here). In diesem Beispiel gebe ich das Color
Objekt für das Pixel zurück, das unter (50, 50)
unter Verwendung getPixel()
gelegen ist. In diesem Beispiel wird davon ausgegangen, dass der Pfad des Bilds mCurrentPhotoPath
ist, aber wo immer Sie das Bild gespeichert haben.
private Color getColor() {
// Get the dimensions of the View
int targetW = mImageView.getWidth();
int targetH = mImageView.getHeight();
// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;
// Determine how much to scale down the image
int scaleFactor = Math.min(photoW/targetW, photoH/targetH);
// Decode the image file into a Bitmap sized to fill the View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
return bitmap.getPixel(50, 50);
}
Sie können RGB-Werte aus diesem Color
Objekt erhalten, das ist, was ich glaube, Sie wollen, zu tun. Das kann unter der Objektdokumentation auf Android-Entwicklern gefunden werden.