4
我試圖確定圖像是一個簡單的黑白圖像,或者如果它有顏色(使用Java)。如果它有顏色,我需要向用戶顯示一條警告消息,說明顏色會丟失。如何確定圖像(java.awt.Image)是否爲B&W,而沒有顏色?
我試圖確定圖像是一個簡單的黑白圖像,或者如果它有顏色(使用Java)。如果它有顏色,我需要向用戶顯示一條警告消息,說明顏色會丟失。如何確定圖像(java.awt.Image)是否爲B&W,而沒有顏色?
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,那麼它是灰色的。
這是想到的第一件事。我不確定在圖像中讀取時是否會設置某種灰度標誌。
我其實只是擔心純黑色和白色(不是灰度)與其他任何東西。那麼在那種情況下,我只會擔心r,g和b都等於255還是等於0? – Lukas 2010-09-13 19:39:09
是的,應該是這種情況。雖然如果你製作一個沒有透明度的BufferedImage(例如,TYPE_INT_RGB),那麼你可以檢查像素== 0xFFFFFF或0x0並保存幾行。 – 2010-09-13 19:51:07