Получение значения RGB из отрицательного значения int - PullRequest
0 голосов
/ 18 февраля 2012

Мне пришлось преобразовать из rgb в hsb, чтобы выполнить выравнивание гистограммы на изображении. Я преобразовал его обратно в RGB и получаю отрицательное значение, как -158435. Может кто-нибудь, пожалуйста, помогите мне понять, как преобразовать это в цвет, чтобы я мог установить его в свой пиксель? Спасибо

1 Ответ

1 голос
/ 18 февраля 2012

Просто используйте сдвиг битов. Это работает.

int rgb = 0x00F15D49;

int r = (rgb >>> 16) & 0xFF;
int g = (rgb >>>  8) & 0xFF;
int b = rgb & 0xFF;

Тогда используйте этот метод Color.RGBtoHSB(int r, int g, int b, float[] hsbvals); как это:

float[] hsb = Color.RGBtoHSB(r, g, b, null);

Чтобы преобразовать его обратно, просто используйте другой метод (отредактированный, вы были правы):

int rgb = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]);
System.out.println(Integer.toHexString(rgb));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...