CONVERSION COULEUR RGB EN HEXADÉCIMAL

biskbart Messages postés 10 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 6 décembre 2006 - 16 nov. 2006 à 22:08
Jeanluco Messages postés 3 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 9 juin 2009 - 14 avril 2009 à 17:22
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

Jeanluco Messages postés 3 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 9 juin 2009
14 avril 2009 à 17:22
Merci pour cette correction, j'avais un changement de couleur en utilisant firefox qui est corrigé en ajoutant cette ligne de code
fcassin Messages postés 1 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
29 janv. 2009 à 16:19
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;
}
}
circular Messages postés 17 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 27 mars 2010
22 juin 2007 à 20:27
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);
# }
biskbart Messages postés 10 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 6 décembre 2006
16 nov. 2006 à 22:08
Merci pour ce code source. Il m'est bien utile !
Rejoignez-nous