Я получаю цвет пикселя
int color = image.getRGB(x,y);
, затем я хочу приобрести красный, зеленый, синий компоненты отдельно.Как это сделать?Может быть, использовать битовую маску?
int green = color&0x00ff00;
, видимо, не работает ...: (
Для получения цветовых компонентов вы можете использовать:
import android.graphics.Color; int r = Color.red(intColor); int g = Color.green(intColor); int b = Color.blue(intColor); int a = Color.alpha(intColor);
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.
Вы забыли сдвинуть байт вправо:
int green = (color & 0x00ff00) >> 8;
Вы можете использовать Color конструктор и передать заданное целое число и hasalpha=true:
Color
hasalpha=true
Color color = new Color(image.getRGB(x,y), true);
getRGB возвращает цвет типа TYPE_INT_ARGB , что означает наличие альфа-канала.