Convertir couleur hexadecimal en RGB avec Python
Préambule
Ce tutoriel, permet de voir comment on peut passer d'une chaîne de caractères représentant une couleur hexadecimal, vers les composantes RGB correspondante.
Fonction int
La fonction int de Python, permet en second paramètre, d'indiquer en quelle base il doit considérer l'entrée, le retour sera en décimal (base 10). Pour lui indiquer donc de l'hexadecimal, on peut lui indiquer 16 en second paramètres, l'integer résultat sera la conversion en base 10. On peut faire la même chose si on souhaite travailler depuis du binaire (base 2).
Obtenir une partie d'une chaîne de caractères
Chaque chaîne de caractères fonctionne comme en PHP : on peut utiliser les crochets afin d'accéder à une position de la chaîne. La particularité ici, c'est que Python permet avec un deux-points (:), d'indiquer un range (une plage), il va alors renvoyer l'ensemble des caractères de cette plage.
La conversion
La conversion est assez simple. Voyons d'abord la théorie :
On fournis en entrée une couleur, par exemple : 'FF0C5C, en sortie on souhaite avoir du RGB. Il suffit de prendre les deux premières caractères, les deux suivants et les deux derniers. On peut donc traiter chaque information séparément, afin d'obtenir notre composante RGB, ainsi FF correspond au rouge et donc à une valeur décimale de 255, 0C une valeur de 12 et 5C une valeur de 92. Au final, donc l'hexadécimal FF0C5C correspondant au RGB : 255, 12, 92.
En pratique :
red = int(h[0:2], 16) green = int(h[2:4], 16) blue = int(h[4:6], 16)
La première ligne va récupérer du caractère 0 au caractère 2 dans notre chaîne soit donc FF, puis il va fournir cette valeur à la fonction int en lui précisant que c'est une valeur en base 16. La seconde ligne va prendre les deux suivants : 0C, et la troisième les deux derniers : 5C.
Dans red, green et bleu, nous aurons donc comme valeur décimale : 255, 12 et 92, ce qui correspond parfaitement.
Conclusion
La conversion est relativement facile, il suffit d'extraire la donnée puis de convertir en précisant la bonne base. Python nous offre des outils assez pratique, en général la conversion est à faire nous même si aucune fonction native n'est fournie pour réaliser la conversion. Certains langages comme PHP, vont fournir des fonctions bien spécifiques pour le faire ; Python lui, nous permet de le faire directement quand on veut passer d'une string à un integer. Cela nous permet de disposer d'une fonction facile à retenir : c'est lors du cast qu'on définit la base.