mögliche Formate der Farbangaben

Fragen zu Tkinter.
Antworten
muhazz
User
Beiträge: 37
Registriert: Donnerstag 1. April 2010, 11:58

Hallo liebe Python-Gemeinde,

eine ganz knappe Frage:
Ich möchte in PhotoImage.put eine Farbangabe machen, aber weder in der üblichen Darstellung "#FF0033" noch mit vordefinierten Schlüsselwörtern.
Am günstigsten für mich wäre eine Farbangabe durch eine ganze Zahl in einem bestimmten Bereich (z.B. von 0 bis 255).
Ist das möglich?

Viele Grüße,
muhazz
BlackJack

Du kannst die ganze Zahl doch vorher durch eine "Tabelle schicken" (Liste oder Dictionary) die diese Zahl auf eine Farbe abbildet wie sie von `Tkinter` erwartet wird.
muhazz
User
Beiträge: 37
Registriert: Donnerstag 1. April 2010, 11:58

Hmm, das würde leider einiges an stumpfsinniger Tipparbeit bedeuten.
Einen passenden Algorithmus zur automatischen Erzeugung konnte ich leider nicht finden.
Naja, es scheint, als müsste ich da durch.

VIele Grüße,
muhazz
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ich sehe das Problem noch nicht.
Geklärt werden müsste doch nur, was eine Farbangabe als ganzzahliger Wert zwischen 0 und 255 bedeuten soll. Je nach dem musst du dir - wie schon vorgeschlagen - das fest kodieren und jeder Zahl eine bestimmte Farbe zuordnen, oder aber, einzelne Bits in der Zahl haben z.B. eine bestimmte Bedeutung und es lässt sich mittels einer (selbst zu schreibenden Funktion) entsprechend auf eine RGB-Angabe transformieren.
Trichter
User
Beiträge: 45
Registriert: Montag 20. April 2009, 10:21

Die übliche Darstellung ('#FF0033') ist doch auch nur eine Zahl im Hexadezimalsystem.
Du kannst dir einfach eine andere Darstellung basteln in der du auf das für uns übliche Zehnersystem zurückgreifst, indem du für Rot, Grün bzw. Blau Werte zwischen 0 und 999 zulässt. Die Zahl, die eine Farbe repräsentiert kannst du dann mit 1.000.000 * R + 1.000 * G + B errechnen.
Grau wäre dann '500500500', grün '999000' und dunkelrot '200000000'.

Um aus diesen Zahlen wieder die einzelnen Farbwerte zu extrahieren musst du nur den Modulo-Operator darauf anwenden.
muhazz
User
Beiträge: 37
Registriert: Donnerstag 1. April 2010, 11:58

numerix hat geschrieben:Ich sehe das Problem noch nicht. [...] Je nach dem musst du dir - wie schon vorgeschlagen - das fest kodieren und jeder Zahl eine bestimmte Farbe zuordnen
Die einzige Möglichkeit, die ich für mich gesehen habe, jedem Wert zwischen 0 und 255 eine Zahl zuzuordnen, ist das Anlegen eines Dictionaries, und zwar per Hand. Einen sinnvollen Algorithmus zur generierung der Farben konnte ich nicht finden.
Das war mir erstmal zu viel Tipparbeit, aber das ganze problem hat sich gelöst, da ich nicht so viel Farben benötige, wie ich anfangs gedacht hatte.
60 Einträge kann ich noch selbst tippen.
Auch wenn es sich sehr unelegant und stumpfsinnig anfühlt, war das glaube ich einfach die schnellste und praktischste Lösung für meine Situation.

Viele Grüße,
muhazz
BlackJack

@muhazz: Ich glaube ich hatte es hier an anderer Stelle schon einmal vorgeschlagen: Schau Dir an wie andere freie Software, zum Beispiel Gimp, mit Farbverläufen und -paletten umgeht. Man kann Farbverläufe anhand weniger Stützpunkte interpolieren oder auch schauen was es an fertigen Paletten im Netz als Daten gibt und die verwenden.
Antworten