Por lo tanto, en un BufferedImage
, recibirá un entero único que tiene los valores RGB representados en él. Hasta ahora uso lo siguiente para obtener los valores RGB:Convertir valores RGB a Entero
// rgbs is an array of integers, every single integer represents the
// RGB values combined in some way
int r = (int) ((Math.pow(256,3) + rgbs[k])/65536);
int g = (int) (((Math.pow(256,3) + rgbs[k])/256) % 256);
int b = (int) ((Math.pow(256,3) + rgbs[k]) % 256);
Y hasta ahora, funciona.
Lo que necesito hacer es averiguar cómo obtener un número entero para que pueda usar BufferedImage.setRGB()
, porque eso toma el mismo tipo de datos que me dio.
No creo que necesite una int en las dos segundas líneas. Y la tercera línea se supone que es "rgb = ...", ¿verdad? –
Es un entero único. Un número entero contiene 32 bits. Los primeros 8 bits son para el valor alfa (que es cero). Los 8 siguientes para el rojo, luego el 8 para el verde y los 8 siguientes para el azul. Intentalo. Si el resultado final es igual a su entrada inicial, sabrá que la conversión se realizó correctamente. – camickr
Erm, creo que dependería de la profundidad de color. Tu ejemplo parece color de 24 bits para mí (8 bits por canal). ¿Es eso lo que 'BufferedImage' espera? –