php - PHP 函数 : brightness(); making RGB colors darker/brighter 需要帮助

标签 php colors hex rgb brightness

想象一个有效的十六进制 #RGB 颜色,定义为 $color = "#f7b9a0";

现在我想让 php 从这个 $color 派生出另外两种稍微亮/暗的颜色(相同的色调/颜色,但只是改变了亮度)。我可以通过哪些方式实现这一目标?什么代码会生成这个?我觉得我需要一些简单的东西,比如:

brightness(input rgb color, ± number of steps); // function outputs the new RGB
 // ?? What php code should go here??

理想情况下,我希望在我的 html 中有这样的内容:

.classDefault {color:<?=$color?> }
.classLighter {color:<?=brightness($color,+10)?> } /* 10 steps brighter */
.classDarker  {color:<?=brightness($color,-25)?> } /* 25 steps darker   */

brightness(); 函数中应该包含哪些 PHP 代码?为了我的梦想成真?
非常感谢任何建议和/或代码!


根据以下答案更新:

function alter_brightness($colourstr, $steps) {
  $colourstr = str_replace('#','',$colourstr);
  $rhex = substr($colourstr,0,2);
  $ghex = substr($colourstr,2,2);
  $bhex = substr($colourstr,4,2);

  $r = hexdec($rhex);
  $g = hexdec($ghex);
  $b = hexdec($bhex);

  $r = max(0,min(255,$r + $steps));
  $g = max(0,min(255,$g + $steps));  
  $b = max(0,min(255,$b + $steps));

  return '#'.dechex($r).dechex($g).dechex($b);
}

### NOW LETS DEFINE MY COLOR
$color = "#2233FF";

### DERIVED BRIGHTER COLORS
$color1 = brightness($color,25);
$color2 = brightness($color,50);
$color3 = brightness($color,75);

### DERIVED DARKER COLORS
$color4 = brightness($color,-25);
$color5 = brightness($color,-50);
$color6 = brightness($color,-75);


<!-- BRIGHTER -->
<div style=" background-color:<?=$color3?>"><?=$color3?></div>
<div style=" background-color:<?=$color2?>"><?=$color2?></div>
<div style=" background-color:<?=$color1?>"><?=$color1?></div>

<!-- DEFINED CONSTANT -->
<div style=" background-color:<?=$color?>"><?=$color?></div>

<!-- DARKER -->
<div style=" background-color:<?=$color4?>"><?=$color4?></div>
<div style=" background-color:<?=$color5?>"><?=$color5?></div>
<div style=" background-color:<?=$color6?>"><?=$color6?></div>

较亮的颜色有效,但较暗的颜色无效。哦,一半的解决方案至少是解决方案的很大一部分,非常感谢!

最佳答案

类似的东西...

function alter_brightness($colourstr, $steps) {
  $colourstr = str_replace('#','',$colourstr);
  $rhex = substr($colourstr,0,2);
  $ghex = substr($colourstr,2,2);
  $bhex = substr($colourstr,4,2);

  $r = hexdec($rhex);
  $g = hexdec($ghex);
  $b = hexdec($bhex);

  $r = max(0,min(255,$r + $steps));
  $g = max(0,min(255,$g + $steps));  
  $b = max(0,min(255,$b + $steps));

  return '#'.dechex($r).dechex($g).dechex($b);
}

像调用 $colour = alter_brightness('#2233FF',5);

关于php - PHP 函数 : brightness(); making RGB colors darker/brighter 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199783/

相关文章:

javascript - 在 Javascript 中将不透明度转换为十六进制

java - 验证 String 是否为十六进制

batch-file - 在 Windows 批处理中将十六进制值写入文件

javascript - Maps LatLng 不读取我的数据

php - 什么是向导?

php - mysql_fetch_assoc() 死机并在随机页面加载时出错?

android - 为什么 copyPixelsFromBuffer 给出的颜色不正确? setPixels 正确但速度慢

html - css - 具有浅阴影颜色的文本和具有较深颜色的前景

javascript - 没有匹配的 jQuery 时搜索栏发出警报

text - 为什么 CGContextSetRGBStrokeColor 不适用于 ios7?