从 PHP 生成渐变颜色

Posted

技术标签:

【中文标题】从 PHP 生成渐变颜色【英文标题】:Generate gradient color from PHP 【发布时间】:2011-03-31 11:29:47 【问题描述】:

我想知道如何构建一个函数来提供颜色和代码 显示此颜色的渐变。例如:

function generate_color(int colorindex)
  .......
   .......
   Generate 10  pale colors of this color.



请帮帮我

【问题讨论】:

请澄清您所说的“渐变”和“淡色”是什么意思。最好是带有图像或数值的真实示例。 【参考方案1】:

这个问题的答案在于您的解决方案,仅在 javascript 中......

Generate lighter/darker color in css using javascript

我不打算把它写出来,但是在谷歌上搜索“lighten hex color php”会得到:

function colourBrightness($hex, $percent) 
 // Work out if hash given
 $hash = '';
 if (stristr($hex,'#')) 
  $hex = str_replace('#','',$hex);
  $hash = '#';
 
 /// HEX TO RGB
 $rgb = array(hexdec(substr($hex,0,2)), hexdec(substr($hex,2,2)), hexdec(substr($hex,4,2)));
 //// CALCULATE
 for ($i=0; $i<3; $i++) 
  // See if brighter or darker
  if ($percent > 0) 
   // Lighter
   $rgb[$i] = round($rgb[$i] * $percent) + round(255 * (1-$percent));
   else 
   // Darker
   $positivePercent = $percent - ($percent*2);
   $rgb[$i] = round($rgb[$i] * $positivePercent) + round(0 * (1-$positivePercent));
  
  // In case rounding up causes us to go to 256
  if ($rgb[$i] > 255) 
   $rgb[$i] = 255;
  
 
 //// RBG to Hex
 $hex = '';
 for($i=0; $i < 3; $i++) 
  // Convert the decimal digit to hex
  $hexDigit = dechex($rgb[$i]);
  // Add a leading zero if necessary
  if(strlen($hexDigit) == 1) 
  $hexDigit = "0" . $hexDigit;
  
  // Append to the hex string
  $hex .= $hexDigit;
 
 return $hash.$hex;

http://lab.pxwebdesign.com.au/?p=14

您的 Google 和我的一样好!

【讨论】:

你能给我一些php中的东西吗【参考方案2】:

Michael 引用的代码相当吓人。但解决方案很简单。如果您只考虑灰度图像可能会更清楚:

 function create_pallette($start, $end, $entries=10)
 
    $inc=($start - $end)/($entries-1);
    $out=array(0=>$start);
    for ($x=1; $x<$entries;$x++) 
      $out[$x]=$start+$inc * $x;
    
    return $out;
 

仅使用 3D 矢量 (RGB) 而不是 1D 矢量。

C.

【讨论】:

以上是关于从 PHP 生成渐变颜色的主要内容,如果未能解决你的问题,请参考以下文章

从颜色 1 到颜色 2 的 n 种颜色的渐变

想要生成一组三维的颜色渐变数据?

有没有办法在界面生成器中制作渐变背景颜色?

从线性渐变颜色值获取背景颜色

如何从调色板中进行颜色渐变

html中想要将背景颜色渐变怎么弄?