Szukam prostego algorytmu do generowania dużej liczby przypadkowych, estetycznych kolorów. Więc nie ma szalonych neonowych kolorów, kolorów przypominających kał itp.
Znalazłem rozwiązania tego problemu, ale opierają się one na alternatywnych paletach kolorów niż RGB. Wolę po prostu używać prostego RGB niż mapowania tam iz powrotem. Te inne rozwiązania mogą co najwyżej wygenerować tylko 32 lub więcej przyjemnych losowych kolorów.
Wszelkie pomysły byłyby świetne.
Odpowiedzi:
Możesz uśrednić wartości RGB losowych kolorów z wartościami stałego koloru:
(przykład w Javie)
Mieszanie losowych kolorów z białym (255, 255, 255) tworzy neutralne pastele poprzez zwiększenie jasności przy jednoczesnym zachowaniu odcienia oryginalnego koloru. Te losowo generowane pastele zwykle dobrze do siebie pasują, szczególnie w dużych ilościach.
Oto kilka pastelowych kolorów wygenerowanych przy użyciu powyższej metody:
Możesz również mieszać losowy kolor ze stałym pastelem, co daje zabarwiony zestaw neutralnych kolorów. Na przykład użycie jasnoniebieskiego tworzy takie kolory:
Idąc dalej, możesz dodać heurystykę do generatora, która uwzględnia uzupełniające się kolory lub poziomy cieniowania, ale wszystko zależy od wrażenia, jakie chcesz osiągnąć za pomocą losowych kolorów.
Niektóre dodatkowe zasoby:
źródło
Chciałbym użyć koła kolorów i przy losowej pozycji można dodać złoty kąt (137,5 stopni)
http://en.wikipedia.org/wiki/Golden_angle
aby za każdym razem uzyskać różne kolory, które się nie nakładają.
Dostosowując jasność koła kolorów, można również uzyskać różne kombinacje jasnych / ciemnych kolorów.
Znalazłem ten post na blogu, który naprawdę dobrze wyjaśnia problem i rozwiązanie za pomocą złotego podziału.
http://martin.ankerl.com/2009/12/09/how-to-create-random-colours-programmatically/
AKTUALIZACJA: Właśnie znalazłem inne podejście:
Nazywa się to metodą RYB (czerwona, żółta, niebieska) i jest opisana w tym artykule:
http://threekings.tk/mirror/ryb_TR.pdf
jako „Kompozycja kolorów inspirowana farbą”.
Algorytm generuje kolory i każdy nowy kolor jest wybierany, aby zmaksymalizować odległość euklidesową od poprzednio wybranych.
Tutaj znajdziesz dobrą implementację w javascript:
http://afriggeri.github.com/RYB/
AKTUALIZACJA 2:
Sciences Po Medialb właśnie wypuściło narzędzie o nazwie „I Want Hue”, które generuje palety kolorów dla badaczy danych. Używanie różnych przestrzeni kolorów i generowanie palet za pomocą k-średnich grupowania lub wektorów siły (wykresy odpychania) Wyniki tych metod są bardzo dobre, pokazują teorię i implementację na swojej stronie internetowej.
http://tools.medialab.sciences-po.fr/iwanthue/index.php
źródło
W javascript:
Widziałem pomysł tutaj: http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
źródło
Konwersja na inną paletę jest znacznie lepszym sposobem na to. Robią to z tego powodu: inne palety są „percepcyjne” - to znaczy zbliżają do siebie podobne pozorne kolory, a dopasowanie jednej zmiennej zmienia kolor w przewidywalny sposób. Nie dotyczy to RGB, w którym nie ma oczywistej zależności między kolorami, które „pasują do siebie”.
źródło
Odniosłem sukces przy użyciu TriadMixing i CIE94, aby uniknąć podobnych kolorów. Poniższy obraz wykorzystuje kolory wejściowe czerwony, żółty i biały. Zobacz tutaj .
źródło
Odpowiedzią, której nie należy zapominać, ponieważ jest prosta i ma zalety, jest próbkowanie prawdziwych zdjęć i obrazów. próbkuj tyle losowych pikseli, ile chcesz losowych kolorów na miniaturach zdjęć współczesnej sztuki, Cezanne, Van Gogha, Monneta, zdjęć ... Zaletą jest to, że możesz uzyskać kolory według motywu i że są to kolory organiczne. po prostu umieść 20-30 zdjęć w folderze i za każdym razem losowo próbuj losowe zdjęcie.
Konwersja na wartości HSV jest szeroko rozpowszechnionym algorytmem kodu dla palety opartej na psychologii. hsv jest łatwiejszy do randomizacji.
źródło
W php:
źródło: https://stackoverflow.com/a/12266311/2875783
źródło
Oto szybki i brudny generator kolorów w C # (przy użyciu „podejścia RYB” opisanego w tym artykule ). To przepisanie z JavaScript .
Posługiwać się:
Pierwsze dwa kolory wydają się być białe i odcień czerni. Często pomijam je w ten sposób (używając Linq):
Realizacja:
źródło
Metoda Davida Crowa w dwuliniowej wersji R:
źródło
W przypadku pastelu podaj wyższe liczby całkowite ciemne / jasne - tj. FnGetRandomColour (120, 250)
Kredyty: wszystkie kredyty do http://paulirish.com/2009/random-hex-color-code-snippets/ stackoverflow.com/questions/12043187/how-to-check-if-hex-color-is-too-black
źródło
Adaptacja JavaScriptu oryginalnej odpowiedzi Davida Crowa, w tym kod IE i Nodejs.
Uruchom funkcję, używając:
źródło
Używaj wyraźnych kolorów .
Napisane w javascript.
Generuje paletę wizualną wyraźnych kolorów.
wyraźne kolory są wysoce konfigurowalne:
źródło
możesz mieć ich jasność. które nieco kontrolowałyby ilość „neonowych” kolorów. na przykład, jeśli „jasność”
mieścił się w pewnej wysokiej granicy, miałby sprany, jasny kolor. I odwrotnie, gdyby znajdował się w pewnym dolnym zakresie, byłby ciemniejszy. Wyeliminowałoby to wszelkie zwariowane, wyróżniające się kolory, a jeśli wybierzesz granicę naprawdę wysoko lub bardzo nisko, wszystkie byłyby dość zbliżone do bieli lub czerni.
źródło
Algorytm będzie trudny do uzyskania, czego chcesz - ludzie od dawna studiują teorię kolorów, a nawet nie znają wszystkich zasad.
Istnieją jednak pewne reguły, których można użyć do wyeliminowania złych kombinacji kolorów (tj. Istnieją zasady dotyczące kolidowania kolorów i wybierania kolorów uzupełniających).
Polecam odwiedzić sekcję artystyczną biblioteki i zapoznać się z książkami na temat teorii kolorów, aby lepiej zrozumieć, co jest dobrym kolorem, zanim spróbujesz go stworzyć - wydaje się, że możesz nawet nie wiedzieć, dlaczego niektóre kombinacje działają, a inne nie t.
-Adam
źródło
Zdecydowanie polecam użycie funkcji cieniowania CG HSVtoRGB, są niesamowite ... daje naturalną kontrolę kolorów jak malarz zamiast kontroli jak monitor CRT, co prawdopodobnie nie jest!
Jest to sposób na uzyskanie 1 wartości zmiennoprzecinkowej. tj. szary, na 1000 ds kombinacji kolorów, jasności i nasycenia itp .:
wynikiem jest NIESAMOWITE RANDOMIZACJA KOLORÓW! nie jest naturalny, ale wykorzystuje naturalne gradienty kolorów i wygląda organicznie i kontroluje parametry opalizujące / pastelowe.
W przypadku perlina możesz użyć tej funkcji, jest to szybka wersja zig zag perlina.
źródło
Oto coś, co napisałem dla witryny, którą wykonałem. Automatycznie wygeneruje losowy płaski kolor tła dla dowolnej div z klasą
.flat-color-gen
. Jquery jest wymagane tylko w celu dodania css do strony; nie jest to wymagane w głównej części tego, jaką jestgenerateFlatColorWithOrder()
metoda.JsFiddle Link
źródło