我正在编写一种用于获取5x5正方形像素的RGB值,然后计算所有像素的平均颜色的方法。
我们给了一个要使用的包,而这正是.getPixel方法之类的来源。
我遇到的困难是让每个像素都位于5x5区域。
我尝试过的是运行循环,最后使用x ++,因此x增加了一个。但是我意识到这只会在第一行得到像素。
我想我必须要有另一个循环或某种嵌套循环才能获得5x5正方形,但是我仍然想不出如何使其工作,同时仍将值分别添加到红色,绿色和蓝色的var中。
有什么提示吗?谢谢
private Color tileColor ( Picture pic, int x, int y ) {
Pixel p;
Color color;
int r,g,b;
int red = 0;
int green = 0;
int blue = 0;
for (int i = 0; i <= 5; i++){
p= pic.getPixel(x,y);
color = p.getColor();
r = color.getRed();
g = color.getGreen();
b = color.getBlue();
red = red + r;
green = green + g;
blue = blue + b;
x++
}
}
最佳答案
通常,我们可以这样写:
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 5; y++) {
p = pic.getPixel(x, y);
// do something ....
}
}
确保它是5个像素,那么0、1、2、3、4已经是5个像素。
另一个常见用法是:
for (int dx = 0; dx < 5; dx++) {
for (int dy = 0; dy < 5; dy++) {
p = pic.getPixel(100 + dx, 200 + dy);
// do something ....
}
}
这是要获得相对于像素
(100, 200)
的像素。 dx
和dy
可以读取为增量x和增量y(较小的增量)。