2013-04-12 18 views
5

Mam BufferedImage przekształconą na skalę szarości za pomocą tego kodu. Zwykle mam wartości pikseli według BufferedImage.getRGB(i,j) i dla każdej wartości R, G i B. Ale jak uzyskać wartość piksela w obrazie w skali szarości?Obraz buforowany - uzyskiwanie wartości piksela w obrazie modelu w skali szarości

EDYCJA: przepraszam, zapomniałem o konwersji.

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

Czy możesz przesłać kod użyty do konwersji? –

+0

"używając tego kodu." gdzie jest kod? –

Odpowiedz

16

jeśli masz RGB obrazu, dzięki czemu można uzyskać wartości (czerwony, zielony, niebieski, szary) tak:

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); 

i szary jest średnią dla (R, G, B), podobnie jak to:

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

ale jeśli konwersji RGB obrazu (24bit) do obrazu w odcieniach szarości (8bit):

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

Zainteresowany wiedzą, jak uzyskać wartość alfa piksela –

+0

@SriHarshaChilakapati alpha to (rgb >> 24) i 0xFF – Kajzer

+0

alfa: (rgb >> 24) i 0xFF –