16进制的颜色值通常表示为#FFFFFF,当前也有缩减为#FFF,前提是两位两位必需相同,例如#FEFEFE这种,就不能进行缩减。而RGB的颜色格式是由3组0~255的数字构成,分别代表红(Red)、绿(Green)、蓝(Blue)的色值。
那么,将16进制转换为RGB色值,其实就是分别把#号后面的两位作为一个单位转换成十进制。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/** * 将16进制颜色转换为RGB * author www.zzvips.com */ function hex2rgb( $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 ; } |
另一种写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/** * 十六进制转RGB * @param string $color 16进制颜色值 * @return array */ public static function hex2rgb( $color ) { $hexColor = str_replace ( '#' , '' , $color ); $lens = strlen ( $hexColor ); if ( $lens != 3 && $lens != 6) { return false; } $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 ( $hex as $key => $vls ) { $rgb [] = hexdec( $vls ); } return $rgb ; } |
RGB颜色和十六进制颜色互转
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
/** * RGB转 十六进制 * @param $rgb RGB颜色的字符串 如:rgb(255,255,255); * @return string 十六进制颜色值 如:#FFFFFF */ function RGBToHex( $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 */ function hex2rgb( $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 ; } |
ps:推荐一款服务器之家在线工具
RGB颜色对照表:https://tool.zzvips.com/t/rgbhex/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:http://www.codetc.com/article-265-1.html