我正在编写一种方法,用于获取 5x5 正方形像素的 RGB 值,然后计算所有这些像素的平均颜色。 我们得到了一个要使用的包,这就是 .getPixel 方法等的来源。
我遇到的困难是获取 5x5 区域中的每个像素。 我尝试过的是运行循环,最后有 x++ 所以 x 增加了 1。但我意识到这只会获取第一行中的像素。
我认为我必须有另一个循环或某种嵌套循环才能获得 5x5 正方形,但我只是想不出如何在将值添加到 vars red、green 和 blue 的同时使其工作。
有什么提示吗?谢谢
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
可以读作 delta x 和 delta y(小增量)。
关于java - 如何获取 5x5 正方形的 RGB 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115940/