2011-10-24 5 views

risposta

2
BufferedImage img = ImageIO.read(new File("lol")); 
int rgb = img.getRGB(x, y); 

Color c = new Color(rgb); 

Ora è possibile utilizzare Color.getRed(), getGreen(), GetBlue() e getAlpha() per ottenere i diversi valori

1

Usa ImageIO.read di leggere il file di immagine in un BufferedImage, e quindi utilizzare uno dei metodi getData per ottenere l'immagine Raster. E qui, troverai metodi per ottenere i dati dei pixel.

2
BufferedImage image = ImageIO.read(new File(myFilename)); 
int pixel = image.getRGB(0, 0); // Top left pixel. 
// Access the color components, valued 0-255. 
int alpha = (pixel >>> 24) & 0xff; // If applicable to image format. 
int r = (pixel >>> 16) & 0xff; 
int g = (pixel >>> 8) & 0xff; 
int b = pixel & 0xff; 

[Edit] noti che @ risposta di Sibbo è corretta e comoda utilizza il Color class color accessor methods; tuttavia, l'estrazione dei colori direttamente tramite la manipolazione dei bit come è stato dimostrato sarà probabilmente molto più veloce poiché evita il sovraccarico delle ripetute chiamate del costruttore.

+0

int r = (pixel >>> 16) & 0xff; int g = (pixel >>> 8) & 0xff; int b = pixel & 0xff; cosa fanno queste righe di codice? e qual è il & opereator o il 0xff significa – lancegerday

+0

@lancegerday: quelle linee estraggono i singoli valori di colore (r, g, b, a) dal valore [pixel RGBA "composito] (http://en.wikipedia.org/wiki/RGBA_color_space) in modo che sia possibile ispezionarli individualmente come valori compresi tra 0 e 255. – maerics

1

Non utilizzare i valori RGB dopo aver completato trasformare l'immagine in un raster utilizzare i raster .getData metodo

1

Utilizzare questa:

Image img.getRGB(x, y); 

Color c = new Color(rgb); 
Problemi correlati