Рассчитывает (оценочную) яркость растрового изображения.
Аргумент "skipPixel" определяет, сколько пикселей пропустить для расчета яркости, потому что вычисление яркости для каждого отдельного пикселя может быть очень интенсивным. Более высокие значения приводят к лучшей производительности, но более оцененному результату.
Когда skipPixel равен 1, метод фактически рассчитывает реальную среднюю яркость, а не оценочную.
Так что «skipPixel» должен быть 1 или больше!
Функция возвращает уровень яркости от 0 до 255, где 0 = полностью черный, а 255 = полностью яркий.
Таким образом, вы должны сами выбирать, что для вас означает «светлое» или «темное».
public int calculateBrightness(android.graphics.Bitmap bitmap, int skipPixel) {
int R = 0; int G = 0; int B = 0;
int height = bitmap.getHeight();
int width = bitmap.getWidth();
int n = 0;
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
for (int i = 0; i < pixels.length; i += skipPixel) {
int color = pixels[i];
R += Color.red(color);
G += Color.green(color);
B += Color.blue(color);
n++;
}
return (R + B + G) / (n * 3);
}
Чтобы получить растровое изображение (изображение) с вашего устройства, вы можете использовать этот код:
final String photoPath = "path to your photo"; // Add photo path here
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);