Heim >Web-Frontend >CSS-Tutorial >Wie konvertiere ich RGB-Farben in Python in englische Farbnamen?

Wie konvertiere ich RGB-Farben in Python in englische Farbnamen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 15:08:021093Durchsuche

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

RGB-Farbe in englischen Farbnamen in Python konvertieren

Gegeben ein Tupel von RGB-Werten, möchten Sie es vielleicht in einen menschlichen Farbnamen umwandeln. lesbarer englischer Farbname. Wie kann dies mit Python erreicht werden?

Lösung

Um eine RGB-Farbe in den entsprechenden englischen Farbnamen zu konvertieren, sollten Sie die Verwendung der Webcolors-Bibliothek in Betracht ziehen. Es bietet die Funktion rgb_to_name(), die ein RGB-Triplett als Eingabe verwendet und den normalisierten Farbnamen zurückgibt, wenn eine Übereinstimmung vorliegt.

Beispiel

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

Name der nächstgelegenen Farbe

Wenn keine perfekte Übereinstimmung gefunden wird, können Sie den Namen der nächstgelegenen Farbe mithilfe des folgenden Codes finden:

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

Vollständige Funktion

Um beide Fälle zu behandeln, können Sie eine Funktion definieren, die die tatsächlichen und nächstgelegenen Farbnamen zurückgibt:

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

Beispielverwendung

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

Ausgabe

Aktuell: Keine, Am nächsten: cadetblue

Das obige ist der detaillierte Inhalt vonWie konvertiere ich RGB-Farben in Python in englische Farbnamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn