2010-09-13 11 views

Répondre

8

La classe BufferedImage a une méthode int getRGB(int x, int y) qui retourne un entier hexadécimal représentant la couleur du pixel en (x, y) (et une autre méthode qui renvoie une matrice de pixels). A partir de ce que vous pouvez obtenir les r, g, et les valeurs de b comme ceci:

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

et vérifier s'ils sont tous égaux pour chaque pixel de l'image. Si r == g == b pour chaque pixel, alors c'est en échelle de gris.

C'est la première chose qui me vient à l'esprit. Je ne suis pas sûr s'il y aurait une sorte de drapeau d'échelle de gris mis en lecture dans une image.

+0

En fait, je suis seulement préoccupé par le noir et blanc pur (pas l'échelle de gris) par rapport à toute autre chose. Alors, dans ce cas, est-ce que je ne m'inquiéterais que lorsque r, g et b sont tous égaux à 255 ou tous égaux à 0? – Lukas

+1

Oui, ça devrait être le cas. Bien que si vous faites un BufferedImage sans transparence (par exemple, TYPE_INT_RGB), alors vous pouvez simplement vérifier que le pixel == 0xFFFFFF ou 0x0 et enregistrer quelques lignes. –

Questions connexes