web-dev-qa-db-fra.com

Comment obtenir une valeur RVB d'un code de couleur hexadécimal en java

J'ai un code de couleur décimal (par exemple: 4898901). Je le convertis en un équivalent hexadécimal équivalent à 4ac055. Comment obtenir la valeur des composantes rouge, verte et bleue à partir du code de couleur hexadécimal?

15
androidGuy

En supposant que ceci soit une chaîne:

// 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;
65
MByD

Si vous avez une chaîne de cette façon, c'est beaucoup plus sympa:

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

Si vous avez un numéro, procédez comme suit:

Color color = new Color(0xFF0000);

Ensuite, bien sûr, pour obtenir les couleurs que vous venez de faire:

float red = color.getRed();
float green = color.getGreen();
float blue = color.getBlue();
7
Daniel Ryan

Essaye ça,

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 ) );
}

Pour utiliser la classe Color, vous devez utiliser Java-rt-jar-stubs-1.5.0.jar as La classe color est from Java.awt.Color

7
Lalit Poptani

Je ne suis pas sûr de votre besoin exact. Cependant quelques conseils.

La classe entière peut transformer un nombre décimal en sa représentation hexadécimale avec la méthode:

Integer.toHexString(yourNumber);

Pour obtenir le RVB, vous pouvez utiliser la classe Color:

Color color = new Color(4898901);
float r = color.getRed();
float g = color.getGreen();
float b = color.getBlue();
5
Francisco Puga

Lorsque vous avez le hex-code : 4ac055. Les deux premières lettres sont de couleur rouge. Les deux suivants sont en vert et les deux dernières lettres sont en bleu. Ainsi, lorsque vous avez le code hexadécimal de la couleur rouge, vous devez le convertir en dez back. Dans cet exemple où red 4a = 74. Green c0 = 192 et blue = 85 ..

Essayez de créer une fonction qui scinde la hexcode et restitue le code rgb

1
Kevin
int color = Color.parseColor("#519c3f");

int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
0
Yoav
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();
0
Abhimanyu Sharma