php中RGB轉十六進位制、十六進位制轉RGB

技術小胖子發表於2017-11-15

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,如需轉載請自行聯絡原作者


相關文章