我們假設為了討論的目的,每個顏色都有一個“值”.那么,你想要的就足夠簡單:
$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值或其他更適合您的應用程序的指標.這個想法會保持不變.