我正在尝试编写一种方法来获取图像底部30%的平均颜色。我试图通过单独遍历每个像素,获得它们的颜色,将它们相加并将结果除以我检查的像素量来实现这一点。我的代码是:
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
int pixel;
int pixelSumRed = 0;
int pixelSumBlue = 0;
int pixelSumGreen = 0;
for (int i = 0; i < 100; i++) {
for (int j = 70; j < 100; j++) {
pixel = image.getPixel((int) Math.round((i/100)*imageWidth), (int) Math.round((j/100)*imageHeight));
pixelSumRed += Color.red(pixel);
pixelSumBlue += Color.blue(pixel);
pixelSumGreen += Color.green(pixel);
Log.d("Checks", "Pixel " + i + ", " + j + " red: " + Color.red(pixel) + ", green: " + Color.green(pixel) + ", blue: " + Color.blue(pixel));
}
}
averagePixelRed = pixelSumRed / 3000;
averagePixelBlue = pixelSumBlue / 3000;
averagePixelGreen = pixelSumGreen / 3000;
现在,我注意到每个像素都打印了相同的颜色,因此对于一个图像,我会得到RGB = 210,44,70的每个像素和另一个图像我会得到RGB = 12,0,90对于每个像素。显然有些事情是错的,但我找不到它是什么。我希望你们能帮助我。
答案 0 :(得分:1)
整数除法的奇迹!当你将i或j除以100时,它将作为整数除法完成,然后向下舍入 - 每次得到0。您可以重新订购它:
(i * imageWidth) / 100