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; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接