2013-04-12 5 views
5

Ho un BufferedImage trasformato in scala di grigi utilizzando questo codice. Di solito ho ottenuto i valori dei pixel per BufferedImage.getRGB(i,j) e per ciascun valore per R, G e B. Ma come ottengo il valore di un pixel in un'immagine in scala di grigio?BufferedImage: acquisizione del valore di un pixel nella foto del modello a colori in scala di grigi

MODIFICA: scusa, ho dimenticato la conversione.

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

Puoi pubblicare il codice che hai usato per convertirlo? –

+0

"utilizzando questo codice." dov'è il codice? –

risposta

16

se si dispone di un'immagine RGB in modo da poter ottenere i valori (rosso, verde, blu, grigio) così:

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

e il grigio è la media per la (R, G, B), in questo modo:

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

ma se si converte l'immagine RGB (24 bit) al grigio immagine (8bit):

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

Interessato a sapere come ottenere il valore alfa di un pixel –

+0

@SriHarshaChilakapati alfa è (rgb >> 24) e 0xFF – Kajzer

+0

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