Comment convertir hexadécimal en RVB en utilisant Java?
96
Comment puis-je convertir une couleur hexadécimale en code RVB en Java? Surtout dans Google, des exemples expliquent comment convertir RVB en hexadécimal.
Pouvez-vous donner un exemple de ce que vous essayez de convertir et vers quoi vous essayez de convertir? Ce que vous essayez de faire n'est pas clair.
Pour ceux qui veulent également une version à 3 caractères, notez que dans le cas de 3 caractères, chaque valeur doit être * 255 / 16. J'ai testé cela avec "000", "aaa" et "fff", et ils fonctionnent tous correctement maintenant .
Andrew
283
En fait, il existe un moyen plus simple (intégré) de le faire:
Color.parseColor ne prend pas en charge les couleurs à trois chiffres comme celle-ci: #fff
neoexpert
Vous pouvez essayer ci-dessous #fff int red = colorString.charAt (1) == '0'? 0: 255; int blue = colorString.charAt (2) == '0'? 0: 255; int vert = colorString.charAt (3) == '0'? 0: 255; Color.rgb (rouge, vert, bleu);
GTID
9
Voici une version qui gère à la fois les versions RVB et RVBA:
/**
* Converts a hex string to a color. If it can't be converted null is returned.
* @param hex (i.e. #CCCCCCFF or CCCCCC)
* @return Color
*/publicstaticColorHexToColor(String hex){
hex = hex.replace("#","");switch(hex.length()){case6:returnnewColor(Integer.valueOf(hex.substring(0,2),16),Integer.valueOf(hex.substring(2,4),16),Integer.valueOf(hex.substring(4,6),16));case8:returnnewColor(Integer.valueOf(hex.substring(0,2),16),Integer.valueOf(hex.substring(2,4),16),Integer.valueOf(hex.substring(4,6),16),Integer.valueOf(hex.substring(6,8),16));}returnnull;}
publicstaticint[] getRGB(finalString rgb){finalint[] ret =newint[3];for(int i =0; i <3; i++){
ret[i]=Integer.parseInt(rgb.substring(i *2, i *2+2),16);}return ret;}
Convertissez-le en entier, puis divmodez-le deux fois par 16, 256, 4096 ou 65536 en fonction de la longueur de la chaîne hexadécimale d'origine (3, 6, 9 ou 12 respectivement).
Pour élaborer sur la réponse @xhh fournie, vous pouvez ajouter le rouge, le vert et le bleu pour formater votre chaîne comme "rgb (0,0,0)" avant de la renvoyer.
For shortened hex code like #fff or #000int red ="colorString".charAt(1)=='0'?0:"colorString".charAt(1)=='f'?255:228;int green ="colorString".charAt(2)=='0'?0:"colorString".charAt(2)=='f'?255:228;int blue ="colorString".charAt(3)=='0'?0:"colorString".charAt(3)=='f'?255:228;Color.rgb(red, green,blue);
Réponses:
Je suppose que cela devrait le faire:
la source
En fait, il existe un moyen plus simple (intégré) de le faire:
la source
la source
Pour développement Android , j'utilise:
la source
Voici une version qui gère à la fois les versions RVB et RVBA:
la source
Un code couleur hexadécimal est #RRGGBB
RR, GG, BB sont des valeurs hexadécimales comprises entre 0 et 255
Appelons RR XY où X et Y sont le caractère hexadécimal 0-9A-F, A = 10, F = 15
La valeur décimale est X * 16 + Y
Si RR = B7, la décimale pour B est 11, donc la valeur est 11 * 16 + 7 = 183
la source
vous pouvez le faire simplement comme ci-dessous:
Par exemple
la source
Pour JavaFX
.
la source
Convertissez-le en entier, puis divmodez-le deux fois par 16, 256, 4096 ou 65536 en fonction de la longueur de la chaîne hexadécimale d'origine (3, 6, 9 ou 12 respectivement).
la source
Beaucoup de ces solutions fonctionnent, mais c'est une alternative.
Si vous n'ajoutez pas 4278190080 (# FF000000), la couleur a un alpha de 0 et ne s'affichera pas.
la source
Pour élaborer sur la réponse @xhh fournie, vous pouvez ajouter le rouge, le vert et le bleu pour formater votre chaîne comme "rgb (0,0,0)" avant de la renvoyer.
la source
Si vous ne souhaitez pas utiliser le code AWT Color.decode, copiez simplement le contenu de la méthode:
Integer.decode gère le # ou 0x, selon la façon dont votre chaîne est formatée
la source
Voici une autre version plus rapide qui gère les versions RGBA:
la source
Le moyen le plus simple:
la source
Les codes de couleur hexadécimaux sont déjà RVB. Le format est #RRGGBB
la source
L'autre jour, j'avais résolu le problème similaire et trouvé pratique de convertir une chaîne de couleur hexadécimale en tableau int [alpha, r, g, b]:
la source
la source