PHP如何从R+G+B的数组中获得HEX颜色代码




我有一个数组:

Array
(
    [red] => 252
    [green] => 168
    [blue] => 166
    [alpha] => 0
)

它是函数imagecolorsforindex的输出
如何从这些元素中获取HTML代码?例如:#99CCFF

严格来说你不能,因为不支持alpha。但由于alpha是0,我们可以假设这无关紧要。因此,将每个值传递到sprintf()中,每个元素的格式说明符为%02x

c = sprintf('#%02x%02x%02x', val['red'], val['green'], val['blue']);

PHP将RGB从/转换为HTML十六进制颜色

rgb2html($array[0], $array[1], $array[2])

PHP手册的这一页的注释中提供了一个函数。

<?PHP
function rgb2hex2rgb($c){
   if(!$c) return false;
   $c = trim($c);
   $out = false;
  if(preg_match("/^[0-9ABCDEFabcdef#]+$/i", $c)){
      $c = str_replace('#','', $c);
      $l = strlen($c) == 3 ? 1 : (strlen($c) == 6 ? 2 : false);
      if($l){
         unset($out);
         $out[0] = $out['r'] = $out['red'] = hexdec(substr($c, 0,1*$l));
         $out[1] = $out['g'] = $out['green'] = hexdec(substr($c, 1*$l,1*$l));
         $out[2] = $out['b'] = $out['blue'] = hexdec(substr($c, 2*$l,1*$l));
      }else $out = false;
   }elseif (preg_match("/^[0-9]+(,| |.)+[0-9]+(,| |.)+[0-9]+$/i", $c)){
      $spr = str_replace(array(',',' ','.'), ':', $c);
      $e = explode(":", $spr);
      if(count($e) != 3) return false;
         $out = '#';
         for($i = 0; $i<3; $i++)
            $e[$i] = dechex(($e[$i] <= 0)?0:(($e[$i] >= 255)?255:$e[$i]));
         for($i = 0; $i<3; $i++)
            $out .= ((strlen($e[$i]) < 2)?'0':'').$e[$i];
         $out = strtoupper($out);
   }else $out = false;
   return $out;
}
?>
Output
#FFFFFF =>
 Array{
   red=>255,
   green=>255,
   blue=>255,
   r=>255,
   g=>255,
   b=>255,
   0=>255,
   1=>255,
   2=>255
 }

#FFCCEE =>
 Array{
   red=>255,
   green=>204,
   blue=>238,
   r=>255,
   g=>204,
   b=>238,
   0=>255,
   1=>204,
   2=>238
 }
CC22FF =>
 Array{
   red=>204,
   green=>34,
   blue=>255,
   r=>204,
   g=>34,
   b=>255,
   0=>204,
   1=>34,
   2=>255
 }
0 65 255 => #0041FF
255.150.3 => #FF9603
100,100,250 => #6464FA 

您可以尝试下面这段简单的代码。

$rgb = (123,222,132);
$rgbarr = explode(",",$rgb,3);
echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]);

这将返回#7bde84

最新更新