2010-11-07 54 views
2

我正在寫一個方法,用於獲取5x5平方像素的RGB值,然後計算所有這些像素的平均顏色。 我們得到了一個可以使用的軟件包,這就是.getPixel方法的來源。如何獲得5x5平方的RGB值?

我遇到的困難是獲取5x5區域中的每個像素。 我試過的是運行循環,並在x +的末尾,所以x增加了一個。但是我意識到這隻能得到最上面一行的像素。

我想我必須有另一個循環或somekind的嵌套循環才能得到5x5正方形,但我無法弄清楚如何使它工作,同時仍然將值添加到變量紅色,綠色和藍色。

任何提示?由於

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

回答

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