在PHP中将十六进制颜色转换为RGB值

使用PHP将十六进制颜色值(如#ffffff转换为单个RGB值255 255 255是一种好方法?


查看PHP的hexdec()dechex()函数:http: dechex()

例:

$value = hexdec('ff'); // $value = 255

如果你想将十六进制转换为rgb,你可以使用sscanf

<?php
$hex = "#ff9900";
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
echo "$hex -> $r $g $b";
?>

输出:

#ff9900 -> 255 153 0

我做了一个函数,如果alpha作为代码下面的第二个参数提供,它也会返回alpha。

功能

function hexToRgb($hex, $alpha = false) {
   $hex      = str_replace('#', '', $hex);
   $length   = strlen($hex);
   $rgb['r'] = hexdec($length == 6 ? substr($hex, 0, 2) : ($length == 3 ? str_repeat(substr($hex, 0, 1), 2) : 0));
   $rgb['g'] = hexdec($length == 6 ? substr($hex, 2, 2) : ($length == 3 ? str_repeat(substr($hex, 1, 1), 2) : 0));
   $rgb['b'] = hexdec($length == 6 ? substr($hex, 4, 2) : ($length == 3 ? str_repeat(substr($hex, 2, 1), 2) : 0));
   if ( $alpha ) {
      $rgb['a'] = $alpha;
   }
   return $rgb;
}

函数响应的例子

print_r(hexToRgb('#19b698'));
Array (
   [r] => 25
   [g] => 182
   [b] => 152
)

print_r(hexToRgb('19b698'));
Array (
   [r] => 25
   [g] => 182
   [b] => 152
)

print_r(hexToRgb('#19b698', 1));
Array (
   [r] => 25
   [g] => 182
   [b] => 152
   [a] => 1
)

print_r(hexToRgb('#fff'));
Array (
   [r] => 255
   [g] => 255
   [b] => 255
)

如果您想以CSS格式返回rgb(a),则只需替换return $rgb; 在函数中使用return implode(array_keys($rgb)) . '(' . implode(', ', $rgb) . ')'; return implode(array_keys($rgb)) . '(' . implode(', ', $rgb) . ')';

链接地址: http://www.djcxy.com/p/87411.html

上一篇: Convert hex color to RGB values in PHP

下一篇: js lighten / darken color