Questo si chiama interpolazione del colore . È ciò che fanno i gradienti sotto il cofano. Puoi farlo usando una varietà di mezzi e metodi, e esattamente come i risultati sono interpolati dipende dal metodo.
Lo faccio comunemente per progetti Web che utilizzano JavaScript in modo da poter cambiare i colori in modo dinamico, come in questo visualizzatore di musica . Un'implementazione JavaScript che ha un metodo molto semplice di interpolazione lineare usando RGB, presa dall'esempio sopra, è la seguente:
// 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;
}
Che viene utilizzato in questo modo e restituisce una matrice di colori interpolati:
var colorArray = interpolateColors("rgb(94, 79, 162)", "rgb(247, 148, 89)", 5);
Puoi anche trovare estensioni di PhotoShop (e probabilmente altri programmi) per eseguire l'interpolazione del colore. Tuttavia, potresti voler controllare per assicurarti che il metodo di interpolazione sia lo stesso che desideri, poiché puoi usare qualsiasi funzione per interpolare in base.