Estoy buscando un algoritmo simple para generar una gran cantidad de colores aleatorios y estéticamente agradables. Así que no hay colores de neón locos, colores que recuerden a las heces, etc.
He encontrado soluciones a este problema, pero dependen de paletas de colores alternativas a RGB. Prefiero usar RGB directo que mapear de un lado a otro. Estas otras soluciones también pueden generar, como máximo, solo 32 colores aleatorios más o menos agradables.
Cualquier idea sería genial.
Respuestas:
Puede promediar los valores RGB de colores aleatorios con los de un color constante:
(ejemplo en Java)
La mezcla de colores aleatorios con blanco (255, 255, 255) crea pasteles neutros al aumentar la luminosidad mientras se mantiene el tono del color original. Estos pasteles generados al azar generalmente van bien juntos, especialmente en grandes cantidades.
Aquí hay algunos colores pastel generados usando el método anterior:
También puede mezclar el color aleatorio con un pastel constante, lo que da como resultado un conjunto teñido de colores neutros. Por ejemplo, usar un azul claro crea colores como estos:
Yendo más lejos, podría agregar heurísticas a su generador que tengan en cuenta los colores complementarios o los niveles de sombreado, pero todo depende de la impresión que desee lograr con sus colores aleatorios.
Algunos recursos adicionales:
fuente
Usaría una rueda de colores y, dada una posición aleatoria, podría agregar el ángulo dorado (137,5 grados)
http://en.wikipedia.org/wiki/Golden_angle
para obtener diferentes colores cada vez que no se superpongan.
Al ajustar el brillo de la rueda de colores, también puede obtener diferentes combinaciones de colores brillantes / oscuros.
He encontrado esta publicación de blog que explica muy bien el problema y la solución utilizando la proporción áurea.
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatic/
ACTUALIZACIÓN: Acabo de encontrar este otro enfoque:
Se llama método RYB (rojo, amarillo, azul) y se describe en este documento:
http://threekings.tk/mirror/ryb_TR.pdf
como "Composición de color inspirada en pintura".
El algoritmo genera los colores y cada nuevo color se elige para maximizar su distancia euclidiana a los previamente seleccionados.
Aquí puede encontrar una buena implementación en javascript:
http://afriggeri.github.com/RYB/
ACTUALIZACIÓN 2:
El Sciences Po Medialb acaba de lanzar una herramienta llamada "Quiero Hue" que genera paletas de colores para los científicos de datos. Usando diferentes espacios de color y generando las paletas usando clusters de k-means o vectores de fuerza (gráficos de repulsión) Los resultados de esos métodos son muy buenos, muestran la teoría y una implementación en su página web.
http://tools.medialab.sciences-po.fr/iwanthue/index.php
fuente
En javascript:
Vi la idea aquí: http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
fuente
La conversión a otra paleta es una forma muy superior de hacer esto. Hay una razón por la que hacen eso: otras paletas son 'perceptuales', es decir, ponen colores similares similares muy cerca, y al ajustar una variable cambia el color de una manera predecible. Nada de eso es cierto para RGB, donde no hay una relación obvia entre colores que "combinan bien".
fuente
He tenido éxito con TriadMixing y CIE94 para evitar colores similares. La siguiente imagen utiliza los colores de entrada rojo, amarillo y blanco. Ver aquí .
fuente
Una respuesta que no debe pasarse por alto, porque es simple y presenta ventajas, es el muestreo de fotos y pinturas de la vida real. muestre tantos píxeles aleatorios como desee colores aleatorios en miniaturas de imágenes de arte moderno, cezanne, van gogh, monnet, fotos ... la ventaja es que puede obtener colores por tema y que son colores orgánicos. solo ponga 20-30 fotos en una carpeta y muestre aleatoriamente una foto aleatoria cada vez.
La conversión a valores HSV es un algoritmo de código generalizado para la paleta psicológicamente basada. hsv es más fácil de aleatorizar.
fuente
En php:
fuente: https://stackoverflow.com/a/12266311/2875783
fuente
Aquí hay un generador de color rápido y sucio en C # (usando el 'enfoque RYB' descrito en este artículo ). Es una reescritura de JavaScript .
Utilizar:
Los primeros dos colores tienden a ser blancos y un tono negro. A menudo los omito así (usando Linq):
Implementación:
fuente
El método de David Crow en un R de dos líneas:
fuente
Para pastel, pase los enteros oscuros / claros de luma más altos, es decir, fnGetRandomColour (120, 250)
Créditos: todos los créditos a http://paulirish.com/2009/random-hex-color-code-snippets/ stackoverflow.com/questions/12043187/how-to-check-if-hex-color-is-too-black
fuente
Adaptación de JavaScript de la respuesta original de David Crow, incluido el código específico de IE y Nodejs.
Ejecute la función usando:
fuente
Usa colores distintos .
Escrito en javascript.
Genera una paleta de colores visualmente distintos.
distintos colores es altamente configurable:
fuente
podrías hacer que estén dentro de un cierto brillo. eso controlaría un poco la cantidad de colores "neón". por ejemplo, si el "brillo"
estaba dentro de cierto límite alto, tendría un color claro y desteñido. Por el contrario, si estuviera dentro de un cierto límite bajo, sería más oscuro. Esto eliminaría cualquier color loco y destacado, y si elige un límite realmente alto o muy bajo, todos estarán bastante cerca del blanco o el negro.
fuente
Va a ser difícil obtener lo que quiere algorítmicamente: las personas han estado estudiando la teoría del color durante mucho tiempo y ni siquiera conocen todas las reglas.
Sin embargo, hay algunas reglas que puede usar para eliminar combinaciones de colores defectuosos (es decir, hay reglas para el choque de colores y la elección de colores complementarios).
Te recomiendo que visites la sección de arte de tu biblioteca y que consultes libros sobre teoría del color para comprender mejor qué es un buen color antes de intentar crearlo; parece que ni siquiera sabes por qué ciertas combinaciones funcionan y otras no. t.
-Adán
fuente
Recomiendo encarecidamente usar una función de sombreador CG HSVtoRGB, son increíbles ... le brinda control de color natural como un pintor en lugar de control como un monitor crt, ¡lo cual probablemente no sea!
Esta es una manera de hacer 1 valor flotante. es decir, gris, en 1000 ds de combinaciones de color, brillo y saturación, etc.
¡El resultado es una ALARMA DE COLOR IMPRESIONANTE! no es natural, pero utiliza gradientes de color naturales y se ve orgánico y controlablemente parámetros iridiscentes / pastel.
Para Perlin, puede usar esta función, es una versión rápida en zigzag de Perlin.
fuente
Aquí hay algo que escribí para un sitio que hice. Generará automáticamente un color de fondo plano aleatorio para cualquier div con la clase
.flat-color-gen
. Jquery solo se requiere para agregar css a la página; No es necesario para la parte principal de esto, que es elgenerateFlatColorWithOrder()
método.JsFiddle Link
fuente