当用户选择的墙纸太亮或太暗时,我想更改我的 TextView 颜色我不知道如何检测。
帮助。提前致谢。
最佳答案
这会计算位图图像的(估计)亮度。 参数“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);
关于android - 检测背景壁纸是否太亮或太暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52203887/