2011-11-03 130 views
0

我在我的代碼和一個BufferedImage實例中有一個截圖方法。我想知道是否可以搜索特定RGB的圖像數據,然後返回像素的X,Y座標。獲取給定像素RGB的x,y座標?

我可以使用什麼?它有可能嗎?

+0

你想第一像素的給定RGB的位置,如果我得到它的權利? –

+1

checkt [this](http://stackoverflow.com/questions/1604319/getting-pixel-data-from-an-image-using-java)問題 – PTBG

+0

這取決於你如何存儲圖像。例如,如果您將它作爲二維數組,您只需查看它就可以收集匹配的像素索引。 – zeller

回答

2
public int[] searchForColor(BufferedImage bi, int searchColor) 
{ 
    for (int x = 0; x < bi.getWidth(); ++x) 
    for (int y = 0; y < bi.getHeight(); ++y) 
    { 
     if ((bi.getRGB(x, y) & 0x00FFFFFF) == searchColor) 
      return new int[]{x, y}; 
    } 
} 

用法:

BufferedImage bi = takeScreenShot(); 
int searchColor = 0x2D5E83; // A random color 
int[] coordinate = searchForColor(bi, searchColor); 
int x = coordinate[0]; 
int y = coordinate[1]; 
+0

嘿,謝謝你,我一直在學校工作一整天,所以明天我會試試看。它看起來像我正在尋找的代碼類型,再次感謝一堆爲headup! – Kimv

+0

如果從三個SeekBars中檢索RGB,該怎麼辦?代碼的哪一部分會改變? – Si8

+0

@ SiKni8:將它們組合在一起。假設你有'int r,g,b',每個都在0到255之間(含),然後做:int rgb =(b << 16)| (b << 8)| (R);'。 –