Điều này được gọi là nội suy màu . Đó là những gì gradient làm dưới mui xe. Bạn có thể làm như vậy bằng nhiều phương tiện và phương pháp khác nhau và chính xác cách kết quả được nội suy phụ thuộc vào phương pháp.
Tôi thường làm điều này cho các dự án web bằng JavaScript để tôi có thể thay đổi màu sắc một cách linh hoạt, chẳng hạn như trong trình hiển thị nhạc này . Một triển khai JavaScript có phương pháp nội suy tuyến tính rất đơn giản sử dụng RGB, được lấy từ ví dụ trên, như sau:
// 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;
}
Được sử dụng như vậy và trả về một mảng các màu được nội suy:
var colorArray = interpolateColors("rgb(94, 79, 162)", "rgb(247, 148, 89)", 5);
Bạn cũng có thể tìm thấy các tiện ích mở rộng PhotoShop (và có thể là chương trình khác) để thực hiện phép nội suy màu. Tuy nhiên, bạn có thể muốn kiểm tra để đảm bảo phương pháp nội suy giống với phương pháp mà bạn mong muốn, vì bạn có thể sử dụng bất kỳ hàm nào để nội suy dựa trên.