Ich suche nach einem Algorithmus, um die beste Textfarbe (am angenehmsten für das Auge) von einer bestimmten Hintergrundfarbe zu erhalten.
Irgendeine Idee?
"Die beste Farbe" ist sehr subjektiv und kontextabhängig. Es hängt davon ab, welchen Effekt Sie haben möchten: Wenn Sie den höchstmöglichen Kontrast wünschen, suchen Sie nach Komplementärfarben (das würde Ihnen Rot auf Grün, Gelb auf Blau usw. geben). Wenn Sie "ähnliche" Farben wünschen, suchen Sie nach analogen Harmonien. Wenn Sie sich nur zwischen Schwarz und Weiß entscheiden möchten, messen Sie die Helligkeit (Hamstergene hat dafür eine sehr gute Formel geschrieben).
Wohin Sie auch gehen, HSV-Farbmodell ist der Schlüssel.
Komplementäre oder analoge Farben zu erhalten ist trivial (z. B. hue_text = (hue_bg + 180) % 360
OR hue_text = (hue_bg + 30) % 360
).
Sie können auch mit Werten (Helligkeit) und Sättigung experimentieren, um einen besseren Kontrast zu erhalten. Zum Beispiel könnte v_text = 1 - v_bg
Ihnen dunklen Text auf hellem Hintergrund geben und umgekehrt (achten Sie auf Mitteltöne!). Es muss nicht linear sein - Sie können auch eine Schrittfunktion verwenden wie: if v_bg < 0.5 then v_text = 1 else v_text = 0
oder if s_bg < 0.5 then s_text = 1 else s_text = 0
(leuchtend auf blass).
Das sind nur ein paar Hinweise. In einem Wort: Kommt drauf an!
Google für Farbtheorie und Farbharmonien. Einige Links:
Es gibt kein Bestes für alle.
Sagen Sie, wenn Sie sicherstellen müssen, dass Text leicht lesbar ist, funktionierte die folgende einfache Formel gut für mich:
%Vor%wo die Helligkeit als
definiert ist %Vor%(Es gibt mehrere Definitionen für "Helligkeit", ich habe diese verwendet, aber ich denke, dass jeder funktionieren würde).