Wie generieren Sie zufällige 'grünlich' Farben
Jemand irgendwelche Vorschläge, wie man die randomisierte Farben, die sind alle grünlich? Jetzt bin ich die Erzeugung der Farben durch diese:
color = (randint(100, 200), randint(120, 255), randint(100, 200))
Dass meistens funktioniert, aber ich bekomme bräunliche Farben viel.
- von Ihnen positiv bewertet werden, für die randomest Frage, die ich je gesehen habe hier!)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfache Lösung: Verwenden Sie die HSL-oder HSV Farbraum anstatt rgb (konvertieren zu RGB-danach, wenn man es braucht). Der Unterschied ist die Bedeutung der Tupel: Wo RGB bedeutet die Werte für Rot, Grün und Blau, im HSL-das H steht für die Farbe (120 Grad oder 0,33 Bedeutung grün zum Beispiel) und S für die Sättigung und V für die Helligkeit. So halten Sie die H bei einem festen Wert (oder sogar mehr zufällige Farben, die Sie könnte, mischen Sie es von add/sub eine kleine Zufallszahl) und mischen der S-und der V. Finden Sie in der wikipedia Artikel.
Als andere haben vorgeschlagen, Erzeugung von Zufallszahlen Farben ist viel einfacher, in den HSV-Farbraum (oder HSL, der Unterschied ist ziemlich irrelevant für diese)
Damit, code zu generieren zufällige "green ' ish" Farben und (für Demonstrationszwecke) zeigt Sie als eine Reihe von einfachen farbigen HTML-span-tags:
Den Ausgang (bei der Anzeige in einem web-browser) Aussehen sollte etwas entlang der Linien von:
Bearbeiten: ich wusste nicht, über die colorsys Modul. Statt der oben
hsv_to_rgb
Funktion, die Sie nutzen könnten colorsys.hsv_to_rgb, das macht den code viel kürzer (es ist nicht ganz ein drop-in-Ersatz, als meinhsv_to_rgb
Funktion erwartet, dass der hue in Grad statt 0-1):Check-out die
colorsys
Modul:http://docs.python.org/library/colorsys.html
Verwendung der HSL-oder HSV-Farbraum. Mischen Sie den Farbton, um die Nähe zu grün, dann wählen Sie " komplett random stuff für die Sättigung und V (Helligkeit).
Wenn du dich mit RGB -, Sie im Grunde müssen nur sicherstellen, dass der G-Wert ist größer als die R und B, und versuchen Sie, blau und rot, ähnliche Werte, so dass der Farbton nicht zu verrückt. Die Ausweitung von Slaks, vielleicht so etwas wie (ich weiß fast nichts über Python):
So, in diesem Fall haben Sie Glück genug, um Variationen einer Grundfarbe, sondern auch für Künstlerische Anwendungen wie diesen ist es besser, Farbe angeben Rad-Koordinaten anstelle von primären Farbe Größen.
Möchten Sie wahrscheinlich etwas von der
colorsys
Modul wie:Die Lösung mit HSx-Farbraum ist sehr gut. Allerdings, wenn Sie etwas brauchen extrem simpel und haben keine spezifischen Vorgaben über die Verteilung der Farben (wie Homogenität), eine simple RGB-basierte Lösung wäre, nur um sicherzustellen, dass G-Wert ist größer als R und B
Diese geben Sie "grünlich" Farben. Einige von Ihnen werden immer so leicht grünlich. Sie kann zur Erhöhung der garantierten Grad der grünheit durch die Erhöhung (absolut oder relativ) die untere Schranke in der letzten
randint
nennen.rg = randint(max(rg ...
und Python muss nicht die explizite line-abschließendes Semikolon!Was Sie wollen, ist Arbeit im Hinblick auf die HSL statt RGB. Sie können finden eine Reihe von hue, die befriedigt "grünlich" und wählen Sie eine zufällige Farbton aus. Sie könnten auch die pick random Sättigung und Leichtigkeit, aber Sie werden wahrscheinlich wollen, um Ihre Sättigung bei etwa 1 und Ihre Leichtigkeit um 0,5, aber Sie können mit Ihnen spielen.
Nachfolgend finden Sie einige actionscript-code zu konvertieren HSL zu RGB. Ich habe nicht berührt python in eine Weile, oder es würde post von der python-version.
Ich finde, dass grünlich ist so etwas wie 0.47*PI 0,8*PI.
Der einfachste Weg, dies zu tun ist, um sicherzustellen, dass die roten und blauen Komponenten sind die gleichen, wie diese: (Verzeihen Sie meine Python)
var form = new Form(); var rand = new Random(); form.Click += delegate{ var green = rand.Next(128,255); var rb = rand.Next(100); form.BackColor=Color.FromArgb(rb,green,rb+rand.Next(-5,5)); }; form.ShowDialog();
Würde ich mit dem HSV-Ansatz alle anderen erwähnt. Ein anderer Ansatz wäre, um eine schöne hochauflösende Fotos, die etwas grün in es, schneiden Sie die nicht-grünen Teile und pick random Pixel mittels PIL.