2011-10-24 22 views

Respuesta

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

Color c = new Color(rgb); 

Ahora puede utilizar Color.getRed(), getGreen(), GetBlue() y getAlpha() para obtener los diferentes valores

1

Uso ImageIO.read para leer el archivo de imagen en un BufferedImage, y luego use uno de los métodos getData para obtener Raster de la imagen. Y allí, encontrará métodos para obtener datos de píxeles.

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; 

[Editar] Tenga en cuenta que la respuesta de @ Sibbo es correcta y convenientemente utiliza el Color class color accessor methods; sin embargo, la extracción de los colores directamente a través de la manipulación de bits como lo he demostrado probablemente será considerablemente más rápida, ya que evita la sobrecarga de las llamadas al constructor repetidas.

+0

int r = (píxel >>> 16) & 0xff; int g = (pixel >>> 8) & 0xff; int b = pixel & 0xff; ¿Qué hacen estas líneas de código? y qué es el & opereator o el 0xff significa – lancegerday

+0

@lancegerday: esas líneas extraen los valores de color individuales (r, g, b, a) del [valor de píxel compuesto de RGBA] (http://en.wikipedia.org/wiki/RGBA_color_space) para que pueda inspeccionarlos fácilmente individualmente como valores entre 0 y 255. – maerics

1

No utilice los valores RGB después de que completó convertir la imagen en una trama utilizar los raster .getData método

1

Utilice esta:

Image img.getRGB(x, y); 

Color c = new Color(rgb); 
Cuestiones relacionadas