Преобразование значений RGB в шестнадцатеричные цвета в PHP

в моем коде у меня есть

$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; }