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:
// Returns a single rgb color interpolation between given rgb color
// based on the factor given; via https://codepen.io/njmcode/pen/axoyD?editors=0010
function interpolateColor(color1, color2, factor) {
if (arguments.length < 3) {
factor = 0.5;
}
var result = color1.slice();
for (var i = 0; i < 3; i++) {
result[i] = Math.round(result[i] + factor * (color2[i] - color1[i]));
}
return result;
};
// My function to interpolate between two colors completely, returning an array
function interpolateColors(color1, color2, steps) {
var stepFactor = 1 / (steps - 1),
interpolatedColorArray = [];
color1 = color1.match(/\d+/g).map(Number);
color2 = color2.match(/\d+/g).map(Number);
for(var i = 0; i < steps; i++) {
interpolatedColorArray.push(interpolateColor(color1, color2, stepFactor * i));
}
return interpolatedColorArray;
}
Que se usa así y devuelve una matriz de colores interpolados:
var colorArray = interpolateColors("rgb(94, 79, 162)", "rgb(247, 148, 89)", 5);
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.