¿Cuál es la forma más rápida de obtener el valor RGB de cada píxel de BufferedImage
?Se necesita una forma más rápida de obtener el valor RGB para cada píxel de una imagen almacenada en memoria intermedia
Ahora estoy obteniendo los valores RGB usando dos bucles for
como se muestra en el siguiente código, pero tardó demasiado tiempo en obtener esos valores ya que el bucle anidado ejecuta un total de 479999 veces para mi imagen. Si utilizo una imagen de 16 bits, ¡este número sería incluso mayor!
Necesito una forma más rápida de obtener los valores de píxel.
Este es el código actualmente estoy tratando de trabajar con:
BufferedImage bi=ImageIO.read(new File("C:\\images\\Sunset.jpg"));
int countloop=0;
for (int x = 0; x <bi.getWidth(); x++) {
for (int y = 0; y < bi.getHeight(); y++) {
Color c = new Color(bi.getRGB(x, y));
System.out.println("red=="+c.getRed()+" green=="+c.getGreen()+" blue=="+c.getBlue()+" countloop="+countloop++);
}
}
'incluso puede aumentar cuando voy a utilizar 16 bits image' - ¿Por qué el número de iteraciones depende de los bits por píxel? ¿Y cuál es el caso de uso para eso? Tenga en cuenta que la creación de objetos 'Color', así como la impresión en la consola lleva un tiempo. Si desea acceder a todos los píxeles de 479999, no puede deshacerse de un bucle (podría fusionarlos en uno, pero eso no debería marcar una gran diferencia). – Thomas
La salida ralentiza el bucle completo. Pruébalo sin. –
Podría ir mucho más rápido sin la impresión –