То, как я это делал в прошлом, - это записать изображение в файловую систему, а затем декодировать его. По общему признанию, это немного неэффективно, но оно функционально.
Для этого требуется ряд шагов. Я предлагаю вам прочитать это documentation. В нем описывается процесс взятия изображения и сохранения его в файловой системе, которую вам нужно будет сделать до, вы можете выполнить остальные шаги.
Для того, чтобы декодировать изображение, вам необходимо будет использовать BitmapFactory
, который даст вам экземпляр Bitmap
, в котором вы можете делать всевозможные вещи (с документами here). В этом примере я возвращаю объект Color
для пикселя, расположенного в (50, 50)
, используя getPixel()
. В этом примере предполагается, что путь изображения равен mCurrentPhotoPath
, но должен быть везде, где вы сохранили изображение.
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);
}
Вы можете получить значение RGB из этого Color
объекта, который является то, что я думаю, что вы хотели сделать. Это можно найти в документации по объектам Color
на Android Developers.