Je dois convertir (0, 128, 64)
à quelque chose comme ceci "#008040"
. Je ne sais pas comment appeler ce dernier, ce qui rend la recherche difficile.
Réponses
Trop de publicités?def RGB(red,green,blue): return '#%02x%02x%02x' % (red,green,blue)
background = RGB(0, 128, 64)
Je sais que les jeux de mots en Python ne sont pas forcément bien vus. Mais il y a des moments où je ne peux pas résister à l'envie de profiter de ce que le parseur Python permet. C'est la même réponse que la solution de Dietrich Epp (la meilleure), mais emballée dans une seule ligne de fonction. Donc, merci Dietrich !
Je l'utilise maintenant avec tkinter :-)
Vous pouvez également utiliser des opérateurs de type "bit wise", ce qui est assez efficace, même si je doute que vous vous préoccupiez de l'efficacité avec quelque chose comme ça. C'est aussi relativement propre. Notez qu'il n'y a pas de bridage ou de vérification des limites. Ceci est supporté depuis au moins Python 2.7.17 .
hex(r << 16 | g << 8 | b)
Et de le changer pour qu'il commence par un # que tu peux faire :
"#" + hex(243 << 16 | 103 << 8 | 67)[2:]
Il existe un paquet appelé webcolors. https://github.com/ubernostrum/webcolors
Il dispose d'une méthode webcolors.rgb_to_hex
>>> import webcolors
>>> webcolors.rgb_to_hex((12,232,23))
'#0ce817'
- Réponses précédentes
- Plus de réponses
1 votes
Voir la réponse précédente de SO stackoverflow.com/questions/214359/ --Parmi les trois réponses, celle qui a reçu le plus de votes comprend un extrait de code python pour faire ce que je crois que vous recherchez.
3 votes
Le terme que vous recherchez est Hex Triplet. fr.wikipedia.org/wiki/Hex_color#Hex_triplet
0 votes
Pour une question plus générale, avec des réponses bien meilleures qu'ici : stackoverflow.com/a/57197866/624066