Home  >  Article  >  Web Front-end  >  How to Convert an RGB Color Tuple to an English Color Name in Python?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 13:37:03490browse

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

Convert RGB Color to English Color Name in Python

You want to transform an RGB color tuple into a color name, such as 'yellow' or 'blue'.

Consider the following code:

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

This code extracts the dominant color from an image and stores it as a tuple. How can you convert this tuple to a color name in Python?

Solution:

The webcolors package offers a useful function called rgb_to_name():

rgb_to_name(rgb_triplet, spec='css3')

This function converts a three-tuple of integer RGB values into its corresponding color name within a specified color specification (e.g., 'css3'). For example:

<code class="python">import webcolors
rgb_to_name((0, 0, 0)) # 'black'</code>

To find the closest color name to a given RGB tuple, you can use a custom function like the following:

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

You can then utilize the following function to retrieve both the actual color name if it exists and the closest matching name:

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

With this function, you can obtain both the exact color name or the closest approximation for a given RGB tuple.

The above is the detailed content of How to Convert an RGB Color Tuple to an English Color Name in Python?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn