Ich suche nach einem einfachen Algorithmus, um eine große Anzahl zufälliger, ästhetisch ansprechender Farben zu erzeugen. Also keine verrückten Neonfarben, Farben, die an Kot erinnern usw.
Ich habe Lösungen für dieses Problem gefunden, aber sie basieren auf alternativen Farbpaletten als RGB. Ich würde lieber nur RGB verwenden, als hin und her zu mappen. Diese anderen Lösungen können auch höchstens 32 oder so ansprechende zufällige Farben erzeugen.
Irgendwelche Ideen wären toll.
Antworten:
Sie können die RGB-Werte von Zufallsfarben mit denen einer konstanten Farbe mitteln:
(Beispiel in Java)
Durch Mischen von zufälligen Farben mit Weiß (255, 255, 255) werden neutrale Pastellfarben erzeugt, indem die Helligkeit erhöht wird, während der Farbton der Originalfarbe beibehalten wird. Diese zufällig erzeugten Pastelle passen normalerweise gut zusammen, besonders in großer Anzahl.
Hier sind einige Pastellfarben, die mit der obigen Methode erzeugt wurden:
Sie können die zufällige Farbe auch mit einem konstanten Pastell mischen, was zu einem getönten Satz neutraler Farben führt. Wenn Sie beispielsweise ein Hellblau verwenden, werden folgende Farben erstellt:
Wenn Sie weiter gehen, können Sie Ihrem Generator Heuristiken hinzufügen, die Komplementärfarben oder Schattierungsstufen berücksichtigen. Dies hängt jedoch alles von dem Eindruck ab, den Sie mit Ihren zufälligen Farben erzielen möchten.
Einige zusätzliche Ressourcen:
quelle
Ich würde ein Farbrad verwenden und bei einer zufälligen Position den goldenen Winkel (137,5 Grad) hinzufügen.
http://en.wikipedia.org/wiki/Golden_angle
um jedes Mal andere Farben zu erhalten, die sich nicht überlappen.
Wenn Sie die Helligkeit für das Farbrad einstellen, können Sie auch verschiedene Hell / Dunkel-Farbkombinationen erhalten.
Ich habe diesen Blog-Beitrag gefunden, der das Problem und die Lösung mit dem Goldenen Schnitt sehr gut erklärt.
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatic/
UPDATE: Ich habe gerade diesen anderen Ansatz gefunden:
Es heißt RYB-Methode (rot, gelb, blau) und wird in diesem Artikel beschrieben:
http://threekings.tk/mirror/ryb_TR.pdf
als "Paint Inspired Color Compositing".
Der Algorithmus generiert die Farben und jede neue Farbe wird ausgewählt, um ihren euklidischen Abstand zu den zuvor ausgewählten zu maximieren.
Hier finden Sie eine gute Implementierung in Javascript:
http://afriggeri.github.com/RYB/
UPDATE 2:
Die Sciences Po Medialb haben gerade ein Tool namens "I want Hue" veröffentlicht, das Farbpaletten für Datenwissenschaftler generiert. Verwenden verschiedener Farbräume und Generieren der Paletten mithilfe von k-Mittel-Clustering oder Kraftvektoren (Abstoßungsgraphen) Die Ergebnisse dieser Methoden sind sehr gut. Sie zeigen die Theorie und eine Implementierung auf ihrer Webseite.
http://tools.medialab.sciences-po.fr/iwanthue/index.php
quelle
In Javascript:
Sah die Idee hier: http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
quelle
Das Konvertieren in eine andere Palette ist eine weitaus bessere Möglichkeit, dies zu tun. Es gibt einen Grund, warum sie das tun: Andere Paletten sind "wahrnehmbar" - das heißt, sie setzen ähnliche scheinbare Farben nahe beieinander und das Anpassen einer Variablen ändert die Farbe auf vorhersehbare Weise. Nichts davon gilt für RGB, wo es keine offensichtliche Beziehung zwischen Farben gibt, die "gut zusammenpassen".
quelle
Ich hatte Erfolg mit TriadMixing und CIE94 , um ähnliche Farben zu vermeiden. Das folgende Bild verwendet die Eingabefarben Rot, Gelb und Weiß. Siehe hier .
quelle
Eine Antwort, die nicht übersehen werden sollte, weil sie einfach ist und Vorteile bietet, ist die Auswahl von Fotos und Gemälden aus dem wirklichen Leben. Probieren Sie so viele zufällige Pixel aus, wie Sie möchten, und wählen Sie zufällige Farben auf Miniaturansichten von Bildern der modernen Kunst, Cezanne, Van Gogh, Monnet, Fotos ... Der Vorteil ist, dass Sie Farben nach Thema erhalten können und dass es sich um organische Farben handelt. Legen Sie einfach 20 - 30 Bilder in einen Ordner und probieren Sie jedes Mal ein zufälliges Bild aus.
Die Konvertierung in HSV-Werte ist ein weit verbreiteter Codealgorithmus für psychologisch basierte Paletten. hsv ist einfacher zu randomisieren.
quelle
In PHP:
Quelle: https://stackoverflow.com/a/12266311/2875783
quelle
Hier ist ein schneller und schmutziger Farbgenerator in C # (unter Verwendung des in diesem Artikel beschriebenen 'RYB-Ansatzes' ). Es ist ein Umschreiben von JavaScript .
Verwenden:
Die ersten beiden Farben sind in der Regel weiß und schwarz. Ich überspringe sie oft so (mit Linq):
Implementierung:
quelle
David Crows Methode in einem R-Zweiliner:
quelle
Geben Sie für Pastell höhere Luma-Ganzzahlen für Dunkel / Hell ein - dh fnGetRandomColour (120, 250).
Credits: Alle Credits für http://paulirish.com/2009/random-hex-color-code-snippets/ stackoverflow.com/questions/12043187/how-to-check-if-hex-color-is-too-black
quelle
JavaScript-Anpassung der ursprünglichen Antwort von David Crow, einschließlich IE- und Nodejs-spezifischem Code.
Führen Sie die Funktion aus mit:
quelle
Verwenden Sie unterschiedliche Farben .
Geschrieben in Javascript.
Es wird eine Palette visuell unterschiedlicher Farben erzeugt.
eindeutige Farben sind hoch konfigurierbar:
quelle
Sie könnten sie innerhalb einer bestimmten Helligkeit haben. das würde die Menge der "Neon" -Farben ein wenig kontrollieren. zum Beispiel, wenn die "Helligkeit"
war innerhalb einer bestimmten hohen Grenze, würde es eine ausgewaschene, helle Farbe haben. Umgekehrt wäre es dunkler, wenn es innerhalb einer bestimmten Untergrenze wäre. Dies würde alle verrückten, herausragenden Farben eliminieren und wenn Sie eine wirklich hohe oder sehr niedrige Grenze wählen würden, wären sie alle ziemlich nahe an Weiß oder Schwarz.
quelle
Es wird schwierig sein, algorithmisch das zu bekommen, was Sie wollen - die Leute haben lange Zeit Farbtheorie studiert und kennen nicht einmal alle Regeln.
Es gibt jedoch einige Regeln, mit denen Sie schlechte Farbkombinationen ausmerzen können (dh es gibt Regeln für das Zusammenprallen von Farben und das Auswählen von Komplementärfarben).
Ich würde empfehlen, dass Sie die Kunstabteilung Ihrer Bibliothek besuchen und Bücher über Farbtheorie lesen, um besser zu verstehen, was eine gute Farbe ist, bevor Sie versuchen, eine zu erstellen. Es scheint, dass Sie nicht einmal wissen, warum bestimmte Kombinationen funktionieren und andere nicht. t.
-Adam
quelle
Ich würde dringend empfehlen, eine CG HSVtoRGB-Shader-Funktion zu verwenden. Sie sind fantastisch. Sie bietet Ihnen eine natürliche Farbkontrolle wie bei einem Maler anstelle einer Kontrolle wie bei einem CRT-Monitor, was Sie vermutlich nicht tun!
Dies ist eine Möglichkeit, 1 Float-Wert zu erstellen. dh Grau, in 1000 ds Kombinationen aus Farbe, Helligkeit und Sättigung usw.:
Das Ergebnis ist eine fantastische Farb-Randomisierung! Es ist nicht natürlich, aber es verwendet natürliche Farbverläufe und es sieht organisch und kontrollierbar schillernd / pastellfarben aus.
Für Perlin können Sie diese Funktion verwenden, es ist eine schnelle Zick-Zack-Version von Perlin.
quelle
Hier ist etwas, das ich für eine Seite geschrieben habe, die ich gemacht habe. Es wird automatisch eine zufällige flache Hintergrundfarbe für jedes Div mit der Klasse generiert
.flat-color-gen
. Jquery wird nur zum Hinzufügen von CSS zur Seite benötigt. Es ist nicht erforderlich für den Hauptteil davon, der diegenerateFlatColorWithOrder()
Methode ist.JsFiddle Link
quelle