преобразовать цвет int в компоненты int - PullRequest
7 голосов
/ 05 декабря 2010

Я получаю цвет пикселя

int color = image.getRGB(x,y);

, затем я хочу приобрести красный, зеленый, синий компоненты отдельно.Как это сделать?Может быть, использовать битовую маску?

int green = color&0x00ff00;

, видимо, не работает ...: (

Ответы [ 4 ]

30 голосов
/ 15 марта 2012

Для получения цветовых компонентов вы можете использовать:

import android.graphics.Color;

        int r = Color.red(intColor);
        int g = Color.green(intColor);
        int b = Color.blue(intColor);
        int a = Color.alpha(intColor);
6 голосов
/ 23 января 2013
int value = image.getRGB(x,y);
R = (byte)(value & 0x000000FF);
G = (byte)((value & 0x0000FF00) >> 8);
B = (byte)((value & 0x00FF0000) >> 16);
A = (byte)((value & 0xFF000000) >> 24);

Может потребоваться перевернуть R, A или B.

3 голосов
/ 05 декабря 2010

Вы забыли сдвинуть байт вправо:

int green = (color & 0x00ff00) >> 8;
2 голосов
/ 05 декабря 2010

Вы можете использовать Color конструктор и передать заданное целое число и hasalpha=true:

Color color = new Color(image.getRGB(x,y), true);

getRGB возвращает цвет типа TYPE_INT_ARGB , что означает наличие альфа-канала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...