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

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

Patricia Arquette
Patricia Arquette原創
2024-10-30 15:08:021000瀏覽

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

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

給定一個RGB 值的元組,您可能希望將其轉換為人類-可讀的英文顏色名稱。如何使用 Python 來完成此操作?

要將 RGB 顏色轉換為其對應的英文顏色名稱,請考慮使用 webcolors 函式庫。它提供了 rgb_to_name() 函數,該函數接受 RGB 三元組作為輸入,如果存在匹配則傳回標準化顏色名稱。

範例

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

最接近的顏色名稱

如果找不到完美匹配,您可以使用以下程式碼找到最接近的顏色名稱:

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

完整功能

要處理這兩種情況,您可以定義一個返回實際且最接近的顏色名稱的函數:

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

範例用法

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

輸出

實際:無,最接近:cadetblue

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

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