Maison  >  Article  >  interface Web  >  Comment convertir la couleur RVB en nom de couleur anglais en Python ?

Comment convertir la couleur RVB en nom de couleur anglais en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 15:08:021000parcourir

How to Convert RGB Color to English Color Name in Python?

Convertir la couleur RVB en nom de couleur anglais en Python

Étant donné un tuple de valeurs RVB, vous souhaiterez peut-être le convertir en un humain- nom de couleur anglais lisible. Comment cela peut-il être accompli en utilisant Python ?

Solution

Pour convertir une couleur RVB en son nom de couleur anglais correspondant, pensez à utiliser la bibliothèque webcolors. Il propose la fonction rgb_to_name(), qui prend un triplet RVB en entrée et renvoie le nom de couleur normalisé si une correspondance existe.

Exemple

<code class="python">import webcolors

# Get RGB color from an image
im = Image.open("test.jpg")
n, color = max(im.getcolors(im.size[0]*im.size[1]))

# Convert to English color name
color_name = webcolors.rgb_to_name(color, spec='css3')
print(color_name)  # Output: 'cadetblue'</code>

Nom de couleur le plus proche

Si une correspondance parfaite n'est pas trouvée, vous pouvez trouver le nom de couleur le plus proche en utilisant le code suivant :

<code class="python">def closest_colour(requested_colour):
    # Iterate through RGB space and calculate Euclidian distance
    min_distances = {}
    for hex_code, name in webcolors.CSS3_HEX_TO_NAMES.items():
        r, g, b = webcolors.hex_to_rgb(hex_code)
        dist = sum((n - c for n, c in zip(requested_colour, (r, g, b))))**2
        min_distances[dist] = name

    # Return the closest color name
    return min_distances[min(min_distances.keys())]</code>

Fonction complète

Pour gérer les deux cas, vous pouvez définir une fonction qui renvoie les noms de couleurs réels et les plus proches :

<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>

Exemple d'utilisation

<code class="python">color = (119, 172, 152)
actual_name, closest_name = get_colour_name(color)
print("Actual:", actual_name, ", Closest:", closest_name)</code>

Sortie

Réel : aucun, le plus proche : cadetblue

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn