我很感兴趣于生成两个给定颜色之间的'n'个渐变色的算法,以实现它们之间的平滑过渡。我尝试让两个通道保持静态,例如 R 和 G,并增量更改 B,但有时候两个颜色之间的差异比相邻的颜色之间的差异更难以处理。我想检查不同的算法并分析它们的优缺点。
我编写了这段代码,它看起来是逻辑的,但某些颜色之间的过渡比其他颜色之间的过渡更困难(例如,0和1之间的过渡比1和2之间的过渡更困难)。
有没有更好的算法来实现这个呢?
我带来了一个例子:在上面的代码中,我使用了
我编写了这段代码,它看起来是逻辑的,但某些颜色之间的过渡比其他颜色之间的过渡更困难(例如,0和1之间的过渡比1和2之间的过渡更困难)。
<?php
$c1 = array(128,175,27); // Color 1
$c2 = array(255,255,140); // Color 2
$nc = 5; // Number of colors to display.
$dc = array(($c2[0]-$c1[0])/($nc-1),($c2[1]-$c1[1])/($nc-1),($c2[2]-$c1[2])/($nc-1)); // Step between colors
for ($i=0;$i<$nc;$i++){
echo '<div style="width:200px;height:50px;background-color:rgb('.round($c1[0]+$dc[0]*$i).','.round($c1[1]+$dc[1]*$i).','.round($c1[2]+$dc[2]*$i).');">'.$i.'</div>'; // Output
}
?>
有没有更好的算法来实现这个呢?
我带来了一个例子:在上面的代码中,我使用了
$c1=array(192,5,248);
和$c2 = array(142,175,240);
和 $nc = 10;
,获得了这张图片:
- 0 = 192,5,248
- 1 = 186,24,247
- 8 = 148,156,241
- 9 = 142,175,240