首頁  >  文章  >  web前端  >  如何在 Python 中將 RGB 顏色元組轉換為英文顏色名稱?

如何在 Python 中將 RGB 顏色元組轉換為英文顏色名稱?

Linda Hamilton
Linda Hamilton原創
2024-10-30 13:37:03485瀏覽

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

在Python 中將RGB 顏色轉換為英文顏色名稱

您想要將RGB 顏色元組轉換為顏色名稱,例如' yellow ' 或'blue'。

考慮以下程式碼:

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

此程式碼從影像中擷取主色並將其儲存為元組。如何在 Python 中將此元組轉換為顏色名稱?

解決方案:

webcolors 套件提供了一個名為rgb_to_name() 的有用函數:

rgb_to_name(rgb_triplet, spec='css3')

此函數將整數RGB 值的三元組轉換為指定顏色規格(例如“css3”)內對應的顏色名稱。例如:

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

要尋找與給定RGB 元組最接近的顏色名稱,您可以使用如下所示的自訂函數:

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

然後您可以使用以下函數會擷取實際顏色名稱(如果存在)和最接近的符合名稱:

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

使用此函數,您可以獲得給定RGB 元組的精確顏色名稱或最接近的近似值。

以上是如何在 Python 中將 RGB 顏色元組轉換為英文顏色名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn