如何获得5x5平方的RGB值?

时间:2010-11-07 00:33:04

标签: java colors pixel image

我正在编写一种方法,用于获取5x5平方像素的RGB值,然后计算所有像素的平均颜色。 我们获得了一个使用的包,这就是.getPixel方法等来自的地方。

我遇到的困难是将每个像素放在5x5区域。 我试过的是运行循环,最后有x ++,所以x增加1。但我意识到这只会得到顶行的像素。

我想我必须有另一个循环或somekind的嵌套循环来获得5x5的方格,但我还是无法弄清楚如何使其工作,同时仍然将值添加到红色,绿色和蓝色的变量。 / p>

任何提示?感谢

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++
  }
}

1 个答案:

答案 0 :(得分:2)

通常,我们可以写:

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可以读取为delta x和delta y(小增量)。