CONVERSION COULEUR RGB EN HEXADÉCIMAL

Signaler
Messages postés
10
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
6 décembre 2006
-
Messages postés
3
Date d'inscription
jeudi 15 janvier 2009
Statut
Membre
Dernière intervention
9 juin 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22291-conversion-couleur-rgb-en-hexadecimal

Messages postés
3
Date d'inscription
jeudi 15 janvier 2009
Statut
Membre
Dernière intervention
9 juin 2009

Merci pour cette correction, j'avais un changement de couleur en utilisant firefox qui est corrigé en ajoutant cette ligne de code
Messages postés
1
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
29 janvier 2009

Bonjour, il y a un bug dans la méthode liée à la conversion du dernier code (B).
En effet la variable pos n'est pas modifiée, la fonction ne fonctionne donc correctement que lorsque le nombre de chiffre dans G est égal au nombre de chiffres dans B
La solution :
Rajouter la ligne suivante entre la ligne 12 et la ligne 13 :
//On enlève 1 a la longueur de la chaine restante pour se débarrasser de la parenthèse fermante
pos = ColorString.length - 1;

Le code corrigé :
function RGBToHex(ColorString) {
HexDigits = "0123456789ABCDEF";
if (ColorString.charAt(0) == '#') {
return ColorString;
} else {
ColorString = ColorString.substr(4);
pos = ColorString.indexOf(',');
Result = '#' + HexDigits.substr(Math.floor(ColorString.substr(0, pos) / 16), 1) + HexDigits.substr(ColorString.substr(0, pos) % 16, 1);
ColorString = ColorString.substr(pos + 1);
pos = ColorString.indexOf(',');
Result = Result + HexDigits.substr(Math.floor(ColorString.substr(0, pos) / 16), 1) + HexDigits.substr(ColorString.substr(0, pos) % 16, 1);
ColorString = ColorString.substr(pos + 1);
pos = ColorString.length - 1;
Result = Result + HexDigits.substr(Math.floor(ColorString.substr(0, pos) / 16), 1) + HexDigits.substr(ColorString.substr(0, pos) % 16, 1);
return Result;
}
}
Messages postés
17
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2010

Autre méthode :
# if (ColorString.charAt(0) == '#') {
# return ColorString;
# } else
# if (ColorString.substring(0,3)=='rgb')
# {
# re = /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/;
# parsed = re.exec(ColorString);
# return (parsed[1]*0x010000+ parsed[2]*0x000100+
# parsed[3]*0x000001 + 0x1000000).toString(16).substring(1,7);
# }
Messages postés
10
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
6 décembre 2006

Merci pour ce code source. Il m'est bien utile !