Bonjour
Comment obtenir les noms des couleurs, quand on a que les données RVB (255, 36, 0) et #ff0000 ?
J'aimerai deux réponses une pour RVB et l'autre pour #..., si possible sans utiliser de modules.
Merci ☺
Bonjour
Comment obtenir les noms des couleurs, quand on a que les données RVB (255, 36, 0) et #ff0000 ?
J'aimerai deux réponses une pour RVB et l'autre pour #..., si possible sans utiliser de modules.
Merci ☺
toutes les couleurs n'ont pas de nom, par contre les couleurs nommées correspondent à une certaine valeur RVB(rr,vv,bb) (ou plutôt RGB(rr,gg,bb)) ou #rrvvbb#
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
sinon en cherchant, on trouve ce module https://webcolors.readthedocs.io/en/...-other-formats (tu demande sans module mais bon)
Salut,
Le HTML définit un grand nombre de couleurs nommées.
Divers sites les propose avec des fonctions de recherche.
Je joins une liste en mode texte.
bonjour
Il te suffit alors d'écrire ton propre tableau pour faire la conversion (existe des libs python)
une référence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 COLORS = { "ff2400": "Scarlet", "ff0000": "Rouge", # .... } # eventuellement convertir 255,36,00 en hexa nom = COLORS.get("ff2400", "?")
A partir du fichier de VinsS, j'ai développé cet exemple basique
On l'appelle en lui passant 255 240 245 et il répond "lavender blush"...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!/usr/bin/env python3 # coding: utf-8 def colorRVB(r, v, b): with open("colors_codes.txt", "r") as fp: for lig in fp: lig=lig.split("#")[0] # Suppression des commentaires lig=lig.split() # Découpage espace if (r, v, b) == tuple(lig[0:3]): return " ".join(lig[3:]) # for # with # colorRVB if __name__ == "__main__": import sys print(colorRVB(*sys.argv[1:4]))
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
C'est super et un super-merci pour vos réponses![]()
Puisqu'il a 1500 entrées dans ma source, il est possible d'écrire une moulinette
Sortie CSV, mais pourquoi pas, directement un code python ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from urllib.request import Request, urlopen from bs4 import BeautifulSoup URL = "https://convertingcolors.com/named-colors.html" with urlopen(Request(URL,headers={'User-Agent': "developpez user (python)"})) as ret: html = ret.read().decode() if not html: exit(2) soup = BeautifulSoup(html, "html.parser") for tr in soup.select("div.f table tbody tr"): fields = [] for td in tr.select("td"): if not td: continue txt = td.get_text() if not txt: continue fields.append(txt.strip()) print(";".join(fields))
Et pour convertir r,v,b en hexa, une petite fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 # format python print("COLORS = {") for tr in soup.select("div.f table tbody tr"): fields = [] for td in tr.select("td"): if not td: continue txt = td.get_text() if not txt: continue fields.append(txt.strip()) print(f' "{fields[1]}": "{fields[0]}",') print("}") print('to_hexa = lambda r, v, b : f"{r:02X}{v:02X}{b:02X}"') print('# usage : COLORS.get("B284BE", "?")') print('# usage : COLORS.get(to_hexa(255, 36, 0), "?")')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 to_hexa = lambda r, v, b : f"{r:02X}{v:02X}{b:02X}" def to_rvb(hexa_color: str): hexa_color = hexa_color.removeprefix("#") return int('0x'+hexa_color[0:2], 0), int('0x'+hexa_color[2:4], 0), int('0x'+hexa_color[4:6], 0)
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
pour les noms de couleur de type Pantone ou RAL, il y a ce module https://github.com/AbdealiLoKo/pycolorname
Hello
J'ai choisi de créer mon propre dictionnaire, puisqu'enfin je risquai de ne pas trouver le nom de la couleur calculée, puis que ça m'était plus explicite.
Je me suis servi des sept couleurs de l'arc-en-ciel comme https://journals.openedition.org/bibnum/743
Ça donne ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 # Python3 utf8 # Comment traiter les couleurs hexas chromatiques from tkinter import * root = Tk() root.geometry("600x600") cant = Canvas(root, width=600, height=600) cant.pack() col_class = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] col_hexas = ['#FF0000', '#FFA500', '#FFFF00', '#008000', '#0000FF', '#4B0082', '#EE82EE'] col_modes = ['Chrome2', 'Chrome4', 'Chrome7', 'Chrome9','Chrome11'] col_diato = ['Tonice', 'Tonale', 'Mélody', 'Médian', 'Domine', 'Harmony', 'Sensif'] col_perso = {} # Fonction de translation de int vers code couleur def hex_trans(code0, code1, colo0, colo1): ('code0:', code0, ' code1:', code1, 'col_perso:', col_perso[code0]) # code0: #FF0000 code1: #FFA500 col_perso: Tonice liste_rvb = '' code00 = code0[1:] # Former un code correct code01, code02, code03 = code00[:2], code00[2:4:], code00[4:] # Sectionner code00 code04 = [code01, code02, code03] # Assemblage résultat code05 = [int(code01, 16), int(code02, 16), int(code03, 16)] # Hexa vers integer code10 = code1[1:] # Former un code correct code11, code12, code13 = code10[:2], code10[2:4:], code10[4:] # Sectionner code10 code14 = [code11, code12, code13] # Assemblage résultat code15 = [int(code11, 16), int(code12, 16), int(code13, 16)] # Hexa vers integer code20, code21 = [], '#' # Calculer la différence pour obtenir une moyenne for lc in range(len(code05)): if code05[lc] == code15[lc]: code20.append(code05[lc]) else: res_dif = (code05[lc] - code15[lc]) // 2 res_fin = code05[lc] - res_dif code20.append(res_fin) # Assembler les codes hexas for c20 in code20: c21 = hex(c20)[2:] if len(c21) == 1: c21 = '0' + c21 code21 += c21 liste_rvb = code21 liste_rvb = liste_rvb.upper() return liste_rvb intro, entre, res, col_count = 30, 10, 0, -1 x0 = x1 = y1 = intro for lin in range(7): col_perso[col_hexas[lin]] = col_diato[lin] cant.create_line(x1, y1, x1*10, y1, width=6, fill=col_hexas[lin]) cant.create_text(x1*11, y1, text=col_class[lin], fill='black') res += 1 # Accès à la prochaine couleur if lin != 2: # res += 1 # Accès à la prochaine couleur if res < 7: autre_ligne = True col_count += 1 col_hexa2 = col_hexas[res] ret_trans = hex_trans(col_hexas[lin], col_hexa2, col_class[lin], col_class[res]) col_perso[ret_trans] = col_modes[col_count] (ret_trans, 'Envoi col_perso:', col_perso[ret_trans], '\tcol_count:', col_count) # #FF5300 Envoi col_perso: Chrome2 col_count: 0 comment = 'Intermédiaire entre ' + col_class[lin] + ' et ' + col_class[res] else: comment, autre_ligne = '', False elif lin == 2: autre_ligne = False y1 += 15 if autre_ligne: cant.create_line(x1, y1, x1*10, y1, width=6, fill=ret_trans) cant.create_text(x1*14, y1, text=comment, fill='black') y1 += 30 x1 += 30 for kcp, vcp in col_perso.items(): cant.create_line(x1, y1, x1*2, y1, width=12, fill=kcp) cant.create_text(x1*3, y1, text=vcp, fill='black') y1 += 13 root.mainloop()
![]()
Partager