setfont - setcolor java
Convierte un valor rgb int negativo en bruto a un valor rgb de 3 nĂºmeros (2)
Ok, estoy trabajando en un programa que toma una imagen, aísla un bloque de píxeles en una matriz y luego obtiene cada valor de rgb individual para cada píxel en esa matriz.
Cuando hago esto
//first pic of image
//just a test
int pix = myImage.getRGB(0,0)
System.out.println(pix);
Escupe -16106634
Necesito obtener el valor (R, G, B) de este valor int
¿Hay una fórmula, alg, método?
int pix = myImage.getRGB(0,0);
Color c = new Color(pix,true); // true for hasalpha
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();
El método BufferedImage.getRGB(int x, int y)
siempre devuelve un píxel en el modelo de color TYPE_INT_ARGB
. Entonces solo necesitas aislar los bits correctos para cada color, así:
int pix = myImage.getRGB(0, 0);
int r = (pix >> 16) & 0xFF;
int g = (pix >> 8) & 0xFF;
int b = pix & 0xFF;
Si quieres el componente alfa:
int a = (pix >> 24) & 0xFF;
Alternativamente, puede usar el constructor Color(int rgba, boolean hasalpha)
para mayor comodidad (a costa del rendimiento).