Automatischer Farbnamen für Web Farben (#00000 -> black)

Du hast eine Idee für ein Projekt?
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

In Adobe Afereffects gibt es eine Routine die automatisch passende Farbnamen generiert, wenn man eine Farbfläche erstellt.
Das klappt nicht nur für Vollton Farben, sondern es kommt auch sowas wie: "Mittel-Limonengrüne Farbfläche1"

Sowas hätte ich gern in Python, für Web-Farben. (Genauer gesagt, für PyLucid, mehr Infos dazu im Forums Thread: v0.9 - CSS ColorScheme {{ color1 }} ?)

Kennt jemand was fertiges? Jemand Lust sowas zu machen?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Kannst du vergessen, der Html standard definiert nur 16 Farbnamen, die von allen Browsern implementiert werden müssen, der Rest ist nach Lust und Laune (und Websafe sind ja 256 iirc, also fehlen dir noch 256-16 Namen^^)…
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, aber wenn man die Farben in Hex-Schreibweise angibt, wie das so ziemlich jeder macht, sind die Websafe-Farben meiner Erfahrung nach von keinerlei Bedeutung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

In Hex ja, aber er will ja die Farbnamen verwenden, soweit ich das verstanden habe und hier schaut es wirklich eher matt aus…
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich halte die Farbnamen ja für total überflüssig. Unter LavenderBlush kann ich mir noch weniger vorstellen als unter #FFF0F5, wo ich zumindest sehe, dass es etwas hellrosaness sein muss. Schaut man sich "gefällige" Farbschemata z.B. auf kuler.adobe.com an, sieht man zudem ganz schnell, dass die Farbabstufungen viel feiner sind und die doch recht kräftigen Grundfarben mit Name zusammen nie (oder selten) ein stimmiges Farbschema ergeben. Daher denke ich nicht, dass man sie je brauchen wird.

Doch wenn man unbedingt will, so schwer ist es ja wohl nicht, die Tabelle von w3school in eine Python-Klasse zu verwandeln. Ich tippe, man ist damit in 4 Minuten durch:

Code: Alles auswählen

class Colors(dict):
    def __getattr__(self, name):
        return self[name]

colors = """
    AliceBlue 	#F0F8FF	 
    AntiqueWhite 	#FAEBD7	 
    Aqua 	#00FFFF	 
    Aquamarine 	#7FFFD4	 
    Azure 	#F0FFFF	 
    Beige 	#F5F5DC	 
    Bisque 	#FFE4C4	 
    Black 	#000000	 
    BlanchedAlmond 	#FFEBCD	 
    Blue 	#0000FF	 
    BlueViolet 	#8A2BE2
    """.split()

Colors = Colors(zip(colors[::2], colors[1::2]))

print Colors['Aqua']
print Colors.Bisque
Damit's nicht zu lang wird, habe ich nicht alle Faben aus der HTML-Tabelle kopiert, aber mehr als ein Copy&Paste ist das nicht.

Stefan
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Sorry, ihr habt mich da anscheinend falsch verstanden. Es geht mit nicht darum hex Farbwerte in "offizielle Web-Farbnamen" zu konvertieren. Es sollen aus gegebenen hex Farbwerte, halbwegs sinnvolle Namen erzeugt werden (Die nichts mit offiziellen Namen zu tun haben müßen).

Sowas wie "Hell orange", "dunkel grau" usw...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

sma hat das Grundproblem doch aber erfasst: Wenn man den Farbwerten willkürliche Namen zuweist, kann der normale Benutzer damit noch weniger anfangen als mit der Hex-Kodierung, bei der man wenigstens die Anteile abschätzen kann.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

colors = [
        ('Red', 1.0, 0.0, 0.0),
        ('Green', 0.0, 1.0, 0.0),
        ('Blue', 0.0, 0.0, 1.0),
        ('Yellow', 1.0, 1.0, 0.0),
]

def find_name(color):
    r1, g1, b1 = color
    return min(
                (((r1-r2)**2+(g1-g2)**2+(b1-b2)**2)**0.5, name)
                for name, r2, g2, b2 in colors)[1]

print find_name((0.8, 0.8, 0.0)) # Yellow
print find_name((0.8, 0.0, 0.0) # Red 
Cofi, frag mal deine Grossmutter ob ihr #fe1234 oder Rot mehr sagt ;)

Gruss,
Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

cofi hat geschrieben:Wenn man den Farbwerten willkürliche Namen zuweist, kann der normale Benutzer damit noch weniger anfangen als mit der Hex-Kodierung, bei der man wenigstens die Anteile abschätzen kann.
Nein. Ich möchte natürlich keine "willkürlichen" Namen, sondern passende Namen. Also genau das was du meinst, der Name soll die Farbe gut beschreiben ;)

Ich denke man müßte es so machen: Erstmal die Hellingkeit nehmen, wenn sehr dunke oder sehr hell. Dann die Farbe ansich, also rot, lila, gelb, grün usw.

So das man Namen erhält, wie "Hell gelb" oder "dunkel türkis", aber dann auch noch "Sonderfälle", wenn es fast rot ist, dann nur "rot" usw.

EDIT: Ich brauche so ein Tool nicht mehr. Besser ist es in meinem Fall die Namen auf Basis der CSS Selektoren zu generieren und nicht nach der Farbe...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab nun was gefunden, das JavaScript "Name that Color". Man kann eine Farbe vorgeben und erhält dazu einen Farbnamen (in Englisch).

Homepage: http://chir.ag/projects/ntc/

Demo: http://chir.ag/projects/name-that-color/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Naja, gerade deskriptiven Charakter haben die Namen ja nicht...
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Jetzt weiß auch auch wie Nepal aussieht :lol: Da musste ich doch schon spontan im Wörterbuch nachgucken ob ich nicht was verpasst hab - anscheinend nicht.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Du könntest die echten Namen nehmen und die jeweils die Farbe heraus suchen, die deiner am ähnlichsten ist. So macht es 'Name that Color' ja auch.

Für Farbnamen hab ich hier noch was: http://github.com/defnull/Lucullus/blob ... r/color.py (spart vielleicht etwas Tipp Arbeit)
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab noch ein Python Skript gefunden: http://code.foosel.org/colorname
sieht so aus:
Bild

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten