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
|
代码执行转换结果:
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"
));
?>
|
本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1217753,如需转载请自行联系原作者