PHP如何从R+;G+;B
PHP如何从R+;G+;B,php,html,hex,rgb,Php,Html,Hex,Rgb,我有一个数组: Array ( [red] => 252 [green] => 168 [blue] => 166 [alpha] => 0 ) 它是函数imagecolorsforindex的输出 如何从这些元素中获取HTML代码?例如:#99CCFF严格来说,您不能,因为alpha不受支持。但是由于alpha是0,我们可以假设这无关紧要。同样地,对于每个元素,使用格式说明符%02x将每个值传递到 c = sprintf('#%02x%
我有一个数组:
Array
(
[red] => 252
[green] => 168
[blue] => 166
[alpha] => 0
)
它是函数imagecolorsforindex的输出如何从这些元素中获取HTML代码?例如:#99CCFF严格来说,您不能,因为alpha不受支持。但是由于alpha是0,我们可以假设这无关紧要。同样地,对于每个元素,使用格式说明符
%02x
将每个值传递到
c = sprintf('#%02x%02x%02x', val['red'], val['green'], val['blue']);
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
输出
#FFFFFF=>
排列{
红色=>255,
绿色=>255,
蓝色=>255,
r=>255,
g=>255,
b=>255,
0=>255,
1=>255,
2=>255
}
#FFCCEE=>
排列{
红色=>255,
绿色=>204,
蓝色=>238,
r=>255,
g=>204,
b=>238,
0=>255,
1=>204,
2=>238
}
CC22FF=>
排列{
红色=>204,
绿色=>34,
蓝色=>255,
r=>204,
g=>34,
b=>255,
0=>204,
1=>34,
2=>255
}
0 65 255=>0041FF
255.150.3=>FF9603
100100250=>#6464FA
您可以尝试下面这段简单的代码
$rgb = (123,222,132);
$rgbarr = explode(",",$rgb,3);
echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]);
这将返回#7bde84关于alpha:See的信息:颜色:rgba(0-255,0-255,0-255,0-1)代码>没有问题。一些浏览器已经正确地解释了这一点。
$rgb = (123,222,132);
$rgbarr = explode(",",$rgb,3);
echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]);