首页  >  文章  >  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