PHP中十六进制颜色与RGB颜色值互转的方法
16进制的颜色值通常表示为#FFFFFF,当前也有缩减为#FFF,前提是两位两位必需相同,例如#FEFEFE这种,就不能进行缩减。而RGB的颜色格式是由3组0~255的数字构成,分别代表红(Red)、绿(Green)、蓝(Blue)的色值。
那么,将16进制转换为RGB色值,其实就是分别把#号后面的两位作为一个单位转换成十进制。
代码如下:
/**
*将16进制颜色转换为RGB
*authorwww.nhooo.com
*/
functionhex2rgb($hexColor){
$color=str_replace('#','',$hexColor);
if(strlen($color)>3){
$rgb=array(
'r'=>hexdec(substr($color,0,2)),
'g'=>hexdec(substr($color,2,2)),
'b'=>hexdec(substr($color,4,2))
);
}else{
$r=substr($color,0,1).substr($color,0,1);
$g=substr($color,1,1).substr($color,1,1);
$b=substr($color,2,1).substr($color,2,1);
$rgb=array(
'r'=>hexdec($r),
'g'=>hexdec($g),
'b'=>hexdec($b)
);
}
return$rgb;
}
另一种写法
/**
*十六进制转RGB
*@paramstring$color16进制颜色值
*@returnarray
*/
publicstaticfunctionhex2rgb($color){
$hexColor=str_replace('#','',$color);
$lens=strlen($hexColor);
if($lens!=3&&$lens!=6){
returnfalse;
}
$newcolor='';
if($lens==3){
for($i=0;$i<$lens;$i++){
$newcolor.=$hexColor[$i].$hexColor[$i];
}
}else{
$newcolor=$hexColor;
}
$hex=str_split($newcolor,2);
$rgb=[];
foreach($hexas$key=>$vls){
$rgb[]=hexdec($vls);
}
return$rgb;
}
RGB颜色和十六进制颜色互转
/**
*RGB转十六进制
*@param$rgbRGB颜色的字符串如:rgb(255,255,255);
*@returnstring十六进制颜色值如:#FFFFFF
*/
functionRGBToHex($rgb){
$regexp="/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/";
$re=preg_match($regexp,$rgb,$match);
$re=array_shift($match);
$hexColor="#";
$hex=array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
for($i=0;$i<3;$i++){
$r=null;
$c=$match[$i];
$hexAr=array();
while($c>16){
$r=$c%16;
$c=($c/16)>>0;
array_push($hexAr,$hex[$r]);
}
array_push($hexAr,$hex[$c]);
$ret=array_reverse($hexAr);
$item=implode('',$ret);
$item=str_pad($item,2,'0',STR_PAD_LEFT);
$hexColor.=$item;
}
return$hexColor;
}
/**
*十六进制转RGB
*/
functionhex2rgb($hexColor){
$color=str_replace('#','',$hexColor);
if(strlen($color)>3){
$rgb=array(
'r'=>hexdec(substr($color,0,2)),
'g'=>hexdec(substr($color,2,2)),
'b'=>hexdec(substr($color,4,2))
);
}else{
$color=$hexColor;
$r=substr($color,0,1).substr($color,0,1);
$g=substr($color,1,1).substr($color,1,1);
$b=substr($color,2,1).substr($color,2,1);
$rgb=array(
'r'=>hexdec($r),
'g'=>hexdec($g),
'b'=>hexdec($b)
);
}
return$rgb;
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接