我正在编写一种用于获取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)的像素。 dxdy可以读取为增量x和增量y(较小的增量)。

10-04 19:21