Dado un color inicial y un color final, ¿es posible generar algorítmicamente una gama de colores entre ellos? Por ejemplo, dados los tonos claros y oscuros de azul / gris al comienzo y al final de la imagen a continuación, ¿cómo podría generar los tonos intermedios?
Una posible solución que estoy considerando es crear un gradiente a partir de los dos colores y luego muestrear el color en puntos equidistantes a lo largo de ese gradiente. ¿Es probable que sea el mejor enfoque?
color
color-theory
Ben Packard
fuente
fuente
Respuestas:
Esto se llama interpolación de color . Es lo que hacen los gradientes debajo del capó. Puede hacerlo utilizando una variedad de medios y métodos, y exactamente cómo se interpolan los resultados depende del método.
Comúnmente hago esto para proyectos web que usan JavaScript para poder cambiar los colores dinámicamente, como en este visualizador de música . Una implementación de JavaScript que tiene un método muy directo de interpolación lineal usando RGB, extraído del ejemplo anterior, es el siguiente:
Demo en vivo
Que se usa así y devuelve una matriz de colores interpolados:
También puede encontrar extensiones de PhotoShop (y probablemente otro programa) para realizar interpolación de color. Sin embargo, es posible que desee verificar para asegurarse de que el método de interpolación es el mismo que desea, ya que puede utilizar cualquier función para interpolar en función de.
fuente
Color Interpolation
era lo que necesitaba Encontré algunas implementaciones de Swift aquí - stackoverflow.com/questions/22868182/uico…Echa un vistazo a esta respuesta. ¿Cómo hacer que un color determinado sea un poco más oscuro o más claro?
Donde simplemente toma los valores separados de cada componente RGB y divide los valores.
Pero tenemos un problema, no hay una sola forma de hacer una transición de color.
El primer enfoque le dará la ruta más corta (1) pero probablemente esa ruta no sea la que necesita.
Esto también se ve afectado por el modelo de color o la lógica. Por ejemplo, en el modelo de color Lab *, el rojo y el verde son colores complementarios, por lo que la ruta corta en ese modelo pasará a través de un gris neutro (3).
Si solo necesita tonos de un color, la otra respuesta es adecuada.
fuente
Use una mezcla en Illustrator en RGB o CMYK:
Object → Blend → Blend Options
y escriba cuántosSpecified steps
necesita entre (20 en mi ejemplo a continuación)Object → Blend → Make
. Esto generará la mezcla que luego puede transformar en objetos individuales a través deObject → Expand
. Luego puede ver cada objeto intermedio con su propio código de color.fuente
Esta es una adición a las otras respuestas.
Cuando interpola colores en sRGB, debe tener en cuenta que los valores RGB no son lineales en intensidad de luz sino lineales en intensidad de luz percibida por el ser humano. Esto hace que guardar valores sea más fácil, pero para varias operaciones de color es necesario ir al espacio de color lineal.
La percepción humana de la intensidad de la luz está de acuerdo con una ley de poder, así que con
se puede usar para transformar entre los dos. Utiliza un valor gamma de 2.2, que es el valor para sRGB. Para más información sobre esto, vea este artículo de Wikipedia.
Un análisis detallado de este problema y ejemplos de implementaciones incorrectas se pueden encontrar aquí . Uno de los cuales es un gradiente de color usando interpolación lineal y sRGB.
fuente
El degradado de Photoshop (o "Mezcla" equivalente en Ai) ya se presenta como una forma de obtener una transición de color lineal entre los colores inicial y final. ¿Cómo obtenemos algo no lineal (una ruta de transición curva) sin programar algún código de script?
Una solución es modificar la ruta de transición del gradiente ajustando capas o modos de fusión o ambos. Esto realmente produce una transformación continua desde el color inicial hasta el color final, si las capas de modificación tienen una máscara de capa que es continua y hace que el afecto = Cero al principio y al final.
Aquí hay un giro bastante complejo. La capa "Destino solo" tiene el gradiente y la capa "Modificador" produce un cambio continuo de color mediante el modo de fusión "Color".
Se genera más giro mediante una capa de ajuste "Curvas" que agrega contraste. Tiene la misma máscara de capa que el Modificador, pero eso no es obligatorio. Cualquier máscara está bien, si es continua y negra al principio y al final.
Existen algunos modos y curvas de mezcla discontinua que provocan un salto brusco. Uno de esos es "Hue". Otra posibilidad de estropear el efecto es "sin cambio", un área de color constante visible causada por el recorte a cero o 255. No he probado ni calculado cuánto ayuda en la práctica a utilizar el modo RGB de 48 bits / píxel. Tal vez no, porque todavía tenemos solo 24 bits / píxel en pantalla.
fuente