Как получить значение RGB из шестнадцатеричного цветового кода в Java - PullRequest
17 голосов
/ 15 сентября 2011

У меня есть десятичный код цвета (например: 4898901).Я конвертирую его в шестнадцатеричный эквивалент этого как 4ac055.Как получить значение красного, зеленого и синего компонентов из шестнадцатеричного цветового кода?

Ответы [ 7 ]

66 голосов
/ 15 сентября 2011

Предполагая, что это строка:

// edited to support big numbers bigger than 0x80000000
int color = (int)Long.parseLong(myColorString, 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;
7 голосов
/ 15 сентября 2011

Если у вас есть строка, это намного приятнее:

Color color =  Color.decode("0xFF0000");
int red = color.getRed();
int blue = color.getBlue();
int green = color.getGreen();

Если у вас есть номер, сделайте это так:

Color color = new Color(0xFF0000);

Тогда, конечно, чтобы получить цвета, которые вы просто делаете:

float red = color.getRed();
float green = color.getGreen();
float blue = color.getBlue();
7 голосов
/ 15 сентября 2011

Попробуйте это,

colorStr e.g. "#FFFFFF"

public static Color hex2Rgb(String colorStr) {
    return new Color(
            Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
            Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
            Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
}

Для использования класса Color вы должны использовать java-rt-jar-stubs-1.5.0.jar в качестве класса Color от java.awt.Color

5 голосов
/ 15 сентября 2011

Я не уверен насчет вашей потребности. Однако некоторые советы.

Целочисленный класс может преобразовать десятичное число в его шестнадцатеричное представление с помощью метода:

Integer.toHexString(yourNumber);

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

Color color = new Color(4898901);
float r = color.getRed();
float g = color.getGreen();
float b = color.getBlue();
1 голос
/ 15 сентября 2011

Когда у вас есть hex-code : 4ac055.Первые две буквы красного цвета.Следующие два выделены зеленым, а последние две буквы - синего цвета.Поэтому, когда у вас есть шестнадцатеричный код красного цвета, вы должны преобразовать его в обратно.В этом примере, где red 4a = 74.Green c0 = 192 и blue = 85 ..

Попробуйте создать функцию, которая разбивает hexcode, а затем возвращает rgb код

0 голосов
/ 27 февраля 2019
int color = Color.parseColor("#519c3f");

int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
0 голосов
/ 11 октября 2017
String hex1 = "#FF00FF00";    //BLUE with Alpha value = #AARRGGBB

int a = Integer.valueOf( hex1.substring( 1, 3 ), 16 );
int r = Integer.valueOf( hex1.substring( 3, 5 ), 16 );
int g = Integer.valueOf( hex1.substring( 5, 7 ), 16 );
int b = Integer.parseInt( hex1.substring( 7, 9 ), 16 );

Toast.makeText(getApplicationContext(), "ARGB: " + a + " , " + r + " ,  "+ g + " , "+ b , Toast.LENGTH_SHORT).show();

String hex1 = "#FF0000";    //RED with NO Alpha = #RRGGBB

int r = Integer.valueOf( hex1.substring( 1, 3 ), 16 );
int g = Integer.valueOf( hex1.substring( 3, 5 ), 16 );
int b = Integer.parseInt( hex1.substring( 5, 7 ), 16 );

Toast.makeText(getApplicationContext(), "RGB: " + r + " ,  "+ g + " , "+ b , Toast.LENGTH_SHORT).show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...