Maison > interface Web > tutoriel CSS > Comment convertir un tuple de couleur RVB en un nom de couleur anglais en Python ?

Comment convertir un tuple de couleur RVB en un nom de couleur anglais en Python ?

Linda Hamilton
Libérer: 2024-10-30 13:37:03
original
551 Les gens l'ont consulté

How to Convert an RGB Color Tuple to an English Color Name in 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>
Copier après la connexion

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')
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal