2013-04-12 6 views
5

Ich habe eine BufferedImage in Graustufen mit diesem Code umgewandelt. Normalerweise habe ich die Pixelwerte durch BufferedImage.getRGB(i,j) und die gor jeden Wert für R, G und B. Aber wie bekomme ich den Wert eines Pixels in einem Graustufenbild?BufferedImage - Erhalten des Wertes eines Pixels in Graustufen Farbmodell Bild

EDIT: Entschuldigung, vergaß die Konvertierung.

static BufferedImage toGray(BufferedImage origPic) { 
    BufferedImage pic = new BufferedImage(origPic.getWidth(), origPic.getHeight(), BufferedImage.TYPE_BYTE_GRAY); 
    Graphics g = pic.getGraphics(); 
    g.drawImage(origPic, 0, 0, null); 
    g.dispose(); 
    return pic; 
} 
+0

Können Sie den Code, den Sie zum Konvertieren verwendet haben, posten? –

+0

"mit diesem Code." Wo ist der Code? –

Antwort

16

wenn Sie RGB-Bild, so dass Sie die (Rot, Grün, Blau, Grau) Werte wie das bekommen:

BufferedImage img;//////read the image 
int rgb = img.getRGB(x, y); 
int r = (rgb >> 16) & 0xFF; 
int g = (rgb >> 8) & 0xFF; 
int b = (rgb & 0xFF); 

und das Grau ist der Durchschnitt (r, g, b), wie folgt aus:

int gray = (r + g + b)/3; 

aber wenn Sie RGB-Bild (24-Bit) konvertieren grau Bild (8bit):

int gray= img.getRGB(x, y)& 0xFF;/////////will be the gray value 
+0

Interessiert zu wissen, wie Alpha-Wert eines Pixels erhalten –

+0

@SriHarshaChilakapati Alpha ist (RGB >> 24) & 0xFF – Kajzer

+0

Alpha: (RGB >> 24) & 0xFF –