в моем коде у меня есть
$color = rgb(255, 255, 255);
Я хочу преобразовать это в шестнадцатеричный цветовой код.
$color = '#ffffff';
Простой sprintf
будет делать.
$color = sprintf("#%02x%02x%02x", 13, 0, 255); // #0d00ff
Чтобы разбить формат:
#
– буквальный символ # %
– начало спецификации преобразования 0
– символ, который будет использоваться для заполнения 2
– минимальное количество символов, которое должно привести к преобразованию, дополненное вышеуказанным при необходимости x
– аргумент рассматривается как целое число и представлен как шестнадцатеричное число с строчными буквами %02x%02x
– вышеупомянутые четыре повторили в два раза больше Вы можете попробовать этот простой фрагмент кода ниже. Вы также можете передавать код rgb динамически и в коде.
$rgb = (123,222,132); $rgbarr = explode(",",$rgb,3); echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]);
Это вернет код, как # 7bde84
Вы можете использовать следующую функцию
function fromRGB($R, $G, $B) { $R = dechex($R); if (strlen($R)<2) $R = '0'.$R; $G = dechex($G); if (strlen($G)<2) $G = '0'.$G; $B = dechex($B); if (strlen($B)<2) $B = '0'.$B; return '#' . $R . $G . $B; }
Затем echo fromRGB(115,25,190);
напечатает # 7319be
Источник: RGB для гексагональных цветов и шестнадцатеричных цветов для RGB – PHP
Вы можете попробовать это
function rgb2html($r, $g=-1, $b=-1) { if (is_array($r) && sizeof($r) == 3) list($r, $g, $b) = $r; $r = intval($r); $g = intval($g); $b = intval($b); $r = dechex($r<0?0:($r>255?255:$r)); $g = dechex($g<0?0:($g>255?255:$g)); $b = dechex($b<0?0:($b>255?255:$b)); $color = (strlen($r) < 2?'0':'').$r; $color .= (strlen($g) < 2?'0':'').$g; $color .= (strlen($b) < 2?'0':'').$b; return '#'.$color; }