2016-07-11 7 views

Antwort

0

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.