Maison > Article > interface Web > Comment convertir un tuple de couleur RVB en un nom de couleur anglais en Python ?
Convertir la couleur RVB en nom de couleur anglais en Python
Vous souhaitez transformer un tuple de couleur RVB en un nom de couleur, tel que « jaune » ' ou 'bleu'.
Considérez le code suivant :
<code class="python">import Image im = Image.open("test.jpg") n, color = max(im.getcolors(im.size[0]*im.size[1])) print color # (119, 172, 152)</code>
Ce code extrait la couleur dominante d'une image et la stocke sous forme de tuple. Comment pouvez-vous convertir ce tuple en nom de couleur en Python ?
Solution :
Le package webcolors propose une fonction utile appelée rgb_to_name() :
rgb_to_name(rgb_triplet, spec='css3')
Cette fonction convertit un triplet de valeurs RVB entières en son nom de couleur correspondant dans une spécification de couleur spécifiée (par exemple, « css3 »). Par exemple :
<code class="python">import webcolors rgb_to_name((0, 0, 0)) # 'black'</code>
Pour trouver le nom de couleur le plus proche d'un tuple RVB donné, vous pouvez utiliser une fonction personnalisée comme la suivante :
<code class="python">import math import webcolors def closest_colour(requested_colour): min_colours = {} for key, name in webcolors.CSS3_HEX_TO_NAMES.items(): r_c, g_c, b_c = webcolors.hex_to_rgb(key) rd = (r_c - requested_colour[0]) ** 2 gd = (g_c - requested_colour[1]) ** 2 bd = (b_c - requested_colour[2]) ** 2 min_colours[(rd + gd + bd)] = name return min_colours[min(min_colours.keys())]</code>
Vous pouvez ensuite utiliser la fonction suivante pour récupérer à la fois le nom réel de la couleur s'il existe et le nom correspondant le plus proche :
<code class="python">def get_colour_name(requested_colour): try: closest_name = actual_name = webcolors.rgb_to_name(requested_colour) except ValueError: closest_name = closest_colour(requested_colour) actual_name = None return actual_name, closest_name</code>
Avec cette fonction, vous pouvez obtenir à la fois le nom exact de la couleur ou l'approximation la plus proche pour un tuple RVB donné.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!