php中RGB转十六进制、十六进制转RGB

php中RGB转十六进制、十六进制转RGB

在js调色器中,不同的浏览器获取到的颜色值会不一样,比如ie是十六进制:#FF00FF,而火狐和谷歌浏览器中:rgb(255,255,255)。

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
53
54
55
56
57
<?php
/**
* 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
* @param string $hexColor 十六颜色 ,如:#ff00ff
* @return array RGB数组
*/
function  hColor2RGB( $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  str_replace ( '#' '' $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 ;
}
print_r(RGBToHex( "rgb(255,255,255)" ));  //RGB转 16进制
print_r(hColor2RGB( '#ff00ff' ));  //十六进制转 RGB


代码执行转换结果:

095119303.jpg

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
25
26
27
28
<?php
/**
* 16进制颜色转换为RGB色值
* @method hex2rgb
*/
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  str_replace ( '#' '' $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 ;
}
print_r(hex2rgb( "#FFFFFF" ));
?>





附:js调色器(js弹出颜色选择框




      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1217753,如需转载请自行联系原作者





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值