2010-02-04 39 views
2

我使用RenderedImage的接口來讀取tif圖像。 我怎樣才能得到這幅畫的所有RGB值在這樣的二維數組:RenderedImage - > RGB值

red[0][128] = 120; // means x=0, y=128, red value = 120 
// the value 120 is the value I have to determine (and oall other rgb values)! 

有誰知道這一點?

非常感謝您的幫助!

+1

是否要從左到右提取所有行並將它們存儲在線性一維數組中? – Abboq 2010-02-04 14:29:42

+0

我想要有三個二維數組:紅色[] [],藍色[] []和綠色[] []。 – Tim 2010-02-04 14:51:28

回答

2

getData()返回Raster,它有一個getData()方法。

你可以叫YourRenderedImage.getData().getPixel(int x, int y, int iArray[])讓您的RGB值?

的JavaDoc:返回INT的指定像素的陣列的樣品。如果座標不在邊界內,則可能拋出ArrayIndexOutOfBoundsException異常。

Raster.getPixel() - JavaDoc

我相信由int返回數組中的元素表示:紅,綠,藍,Alpha和內六角扳手,但我不知道。

+0

嗯,那不是我的問題。我不知道如何獲取/訪問我的PlanarImage(RenderedImage)的RGB值。 – Tim 2010-02-04 14:53:45

+0

我很抱歉,我原本以爲你想要遍歷二維數組。 – Abboq 2010-02-04 15:01:29

+0

它適合我,非常感謝! – Tim 2010-02-04 21:53:41

0

Abboq,我以爲你想穿越Raster,這應該工作。或者,您可能可以使用BandSelect來獲得所需的三個樂隊中的每一個。

RenderedImage[] dst = new RenderedImage[3]; 
int[] bandIndices = new int[1]; 
for (int i = 0; i < 3; i++) { 
    bandIndices[0] = i; 
    pb = new ParameterBlock(); 
    pb.addSource(src); 
    pb.add(bandIndices); 
    dst[i] = (RenderedImage) JAI.create("bandSelect", pb); 
}