gpt4 book ai didi

php - 在 PHP 中生成 RGB 分级颜色的算法

转载 作者:可可西里 更新时间:2023-11-01 12:52:43 25 4
gpt4 key购买 nike

我对在两种给定颜色之间生成“n”种渐变颜色的算法很感兴趣,这些颜色在每种颜色之间生成平滑过渡。

我尝试让静态两个 channel ,例如 R 和 G,以及增量变化 B,但有时两种颜色之间的差异比相邻颜色之间的差异更难。

我想检查不同的算法并分析它们的弱点和优势。


我写了这段代码,它看起来合乎逻辑,但是某些颜色之间的过渡比其他颜色之间的过渡更难(例如,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; 得到这张图片:

graduated colors example

0,1,8,9的RGB值分别是:

  • 0 = 192,5,248
  • 1 = 186,24,247
  • 8 = 148,156,241
  • 9 = 142,175,240

如果您观察,相邻颜色 6、19、1 之间存在差异。但是 0 和 1 之间的视觉过渡比 8 和 9 之间的过渡更柔和。对于 HSV 来说也是一样。它带有一些颜色,可以使它的过渡更硬或更柔和。

最佳答案

在 HSV 中,生成 n 种颜色,其色调从第一种颜色线性变化到第二种颜色。将每个 HSV 值转换为 RGB。

关于php - 在 PHP 中生成 RGB 分级颜色的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com