给定十六进制代码(例如 #eeeeee),返回 RGB 值数组。
function hex2rgb( $colour ) {
if ( $colour[0] == '#' ) {
$colour = substr( $colour, 1 );
}
if ( strlen( $colour ) == 6 ) {
list( $r, $g, $b ) = array( $colour[0] . $colour[1], $colour[2] . $colour[3], $colour[4] . $colour[5] );
} elseif ( strlen( $colour ) == 3 ) {
list( $r, $g, $b ) = array( $colour[0] . $colour[0], $colour[1] . $colour[1], $colour[2] . $colour[2] );
} else {
return false;
}
$r = hexdec( $r );
$g = hexdec( $g );
$b = hexdec( $b );
return array( 'red' => $r, 'green' => $g, 'blue' => $b );
}
感谢,我把它用作一个好的起点。
我已经稍微更新了它,使其更短,并假设最终十六进制始终为 6 个字符(因为我控制输入)。str_split() 可能对你的代码有所帮助吗?
function($hexString){
$hexString = preg_replace(“/[^abcdef]/i”,””,$hexString);
if(strlen($hexString)==6){
list($r,$g,$b) = str_split($hexString,2);
return Array(“r”=>hexdec($r),”g”=>hexdec($g),”b”=>hexdec($b));
}
我刚意识到我没有复制整个代码。
末尾少了一个 false! 哈哈….
function hex2rgb($hexString){
$hexString = preg_replace(“/[^abcdef]/i”,””,$hexString);
if(strlen($hexString)==6){
list($r,$g,$b) = str_split($hexString,2);
return Array(“r”=>hexdec($r),”g”=>hexdec($g),”b”=>hexdec($b));
}
return false;
}
如果有人对 JavaScript 等效项感兴趣,我使用了这个(不完美,但似乎可以完成工作)
function hex2rgb( colour ) {
var r,g,b;
if ( colour.charAt(0) == ‘#’ ) {
colour = colour.substr(1);
}
r = colour.charAt(0) + ” + colour.charAt(1);
g = colour.charAt(2) + ” + colour.charAt(3);
b = colour.charAt(4) + ” + colour.charAt(5);
r = parseInt( r,16 );
g = parseInt( g,16 );
b = parseInt( b ,16);
return “rgb(” + r + “,” + g + “,” + b + “)”;
}
谢谢,它确实有效。经过一些修改,它也可以用于 rgba 颜色代码,只需添加一个参数即可。
我想说这个网站的内容质量很高!
当然,上面的代码正是我想要的。
谢谢,你是救命恩人。我需要这个用于客户项目,我已经玩了很久,但我无法完全正确地完成!
再次感谢!
超级棒的代码片段,可以放在 WordPress 插件中!
这里还有另一个更小的函数用于将 十六进制颜色转换为 RGB
这太棒了,非常感谢。我想知道是否有一个资源可以清楚简洁地向白痴解释这种表示法…
使用 PHP 一行代码将十六进制颜色转换为 RGB。
list($r,$g,$b) = array_map('hexdec',str_split($colorVar,2));
或者如果你想让变量包含 # 前缀,则
list($r,$g,$b) = array_map('hexdec',str_split(ltrim($colorVar, '#'),2));
这似乎是一种非常简便的方法
在此处找到: https://stackoverflow.com/questions/15202079/convert-hex-color-to-rgb-values-in-php