Domanda

Sto cercando di colore singoli pixel in un BufferedImage (TYPE_INT_RGB) utilizzando setRGB(), ma non sono sicuro come formattare i valori RGB. Voglio che il risultato come un singolo intero. Esiste un metodo che prenderà tre valori int (rosso, verde, blu) e restituire un intero correttamente formattato per setRGB()?

È stato utile?

Soluzione

Supponendo di avere interi r, g, e b, si può fare:

int pixel = (r << 16) | (g << 8) | b;

Questo perché pixel in una BufferedImage sono interi a 4 byte. I 4-byte rappresentano Alpha, rosso, verde e blu, in questo ordine. Quindi, se si sposta rosso sinistra da due byte e verde a sinistra da un byte, quindi bit a bit-o r, g, e b, si otterrà un pixel valida per l'utilizzo con setRGB().

Altri suggerimenti

new Color(red, green, blue).getRGB();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top