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

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

<?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色值,另一种方法:

<?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弹出颜色选择框