Есть ли эквивалентность MapRGB для BufferedImage в Java? - PullRequest
2 голосов
/ 04 апреля 2010

Я пытаюсь раскрасить отдельные пиксели в BufferedImage (TYPE_INT_RGB), используя setRGB(), но я не уверен, как форматировать значения RGB. Я хочу, чтобы результат был одним целым числом. Существует ли метод, который будет принимать три значения int (красный, зеленый, синий) и возвращать правильно отформатированное целое число для setRGB()?

Ответы [ 2 ]

4 голосов
/ 04 апреля 2010
new Color(red, green, blue).getRGB();
2 голосов
/ 04 апреля 2010

Если у вас есть целые числа r, g и b, вы можете сделать:

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

Это потому, что пиксели в BufferedImage являются 4-байтовыми. 4 байта представляют альфа, красный, зеленый и синий, в этом порядке. Таким образом, если вы сместите красный влево на два байта, а зеленый влево на один байт, а затем поразрядно или r, g и b, вы получите правильный пиксель для использования с setRGB().

...