Nazywa się to interpolacją kolorów . To właśnie robią gradienty pod maską. Możesz to zrobić przy użyciu różnych środków i metod, a dokładny sposób interpolacji wyników zależy od metody.
Zazwyczaj robię to dla projektów internetowych przy użyciu JavaScript, dzięki czemu mogę dynamicznie zmieniać kolory, na przykład w tym wizualizatorze muzyki . Implementacja JavaScript, która ma bardzo prostą metodę interpolacji liniowej za pomocą RGB, wyciągnięta z powyższego przykładu, wygląda następująco:
// 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;
}
Który jest używany w ten sposób i zwraca tablicę interpolowanych kolorów:
var colorArray = interpolateColors("rgb(94, 79, 162)", "rgb(247, 148, 89)", 5);
Możesz także znaleźć rozszerzenia PhotoShop (i prawdopodobnie inne programy) do interpolacji kolorów. Możesz jednak sprawdzić, czy metoda interpolacji jest taka sama, jak chcesz, ponieważ możesz użyć dowolnej funkcji do interpolacji na podstawie.