我们假设为了讨论的目的,每个颜色都有一个“值”.那么,你想要的就足够简单:
$index = 0.2;
$val1 = get_value_of_color($color1);
$val2 = get_value_of_color($color2);
$newval = $val1 * $index + $val2 * (1 - $index);
$newcolor = get_color_from_value($newval);
所以,很难找出每种颜色的“价值”.
您可以使用简单的RGB值,其中每个颜色的“值”是一组三个整数:
function get_value_of_color($color) {
// assume $color is in the form #xxxxxx
return array(
hexdec(substr($color, 1, 2)),
hexdec(substr($color, 3, 2)),
hexdec(substr($color, 5, 2)),
);
}
function get_color_from_value($value) {
return sprintf('#%02x%02x%02x', $value[0], $value[1], $value[2]);
}
这里需要在每个阵列元素上进行乘法和加法.我认为在这一点上,应该很容易使一个简单的使用功能来混合自己的颜色.
如果这不是您需要的,那么您可以使用HSL值或其他更适合您的应用程序的指标.这个想法会保持不变.