2010-09-13 42 views

回答

8

BufferedImage類有一個方法int getRGB(int x, int y),該方法返回表示(x,y)處像素顏色的十六進制整數(以及返回像素矩陣的另一種方法)。從這個你可以得到R,G,B值,像這樣:

int r = (0x00ff0000 & rgb) >> 16; 
int g = (0x0000ff00 & rgb) >> 8; 
int b = (0x000000ff & rgb);

,然後檢查他們是否都是平等的圖像中的每個像素。如果每個像素的r == g == b,那麼它是灰色的。

這是想到的第一件事。我不確定在圖像中讀取時是否會設置某種灰度標誌。

+0

我其實只是擔心純黑色和白色(不是灰度)與其他任何東西。那麼在那種情況下,我只會擔心r,g和b都等於255還是等於0? – Lukas 2010-09-13 19:39:09

+1

是的,應該是這種情況。雖然如果你製作一個沒有透明度的BufferedImage(例如,TYPE_INT_RGB),那麼你可以檢查像素== 0xFFFFFF或0x0並保存幾行。 – 2010-09-13 19:51:07

相關問題