Введение
В этой статье я приведу пример двух функций, которые позволяют осуществлять перевод цвета из HEX в RGB и обратно. Эти функции могут быть полезны при работе с графикой, поскольку не всегда сразу можно получить цвет в нужном виде.
Перевод цвета из HEX в RGB и обратно с помощью php. Код
Первая функция, позволяет осуществлять перевод цвета из HEX в RGB:
// перевод цвета из HEX в RGB function hexToRgb($color) { // проверяем наличие # в начале, если есть, то отрезаем ее if ($color[0] == '#') { $color = substr($color, 1); } // разбираем строку на массив if (strlen($color) == 6) { // если hex цвет в полной форме - 6 символов list($red, $green, $blue) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif (strlen($cvet) == 3) { // если hex цвет в сокращенной форме - 3 символа list($red, $green, $blue) = array( $color[0]. $color[0], $color[1]. $color[1], $color[2]. $color[2] ); }else{ return false; } // переводим шестнадцатиричные числа в десятичные $red = hexdec($red); $green = hexdec($green); $blue = hexdec($blue); // вернем результат return array( 'red' => $red, 'green' => $green, 'blue' => $blue ); }
Вторая функция работает в обратном направлении:
// перевод цвета из RGB в HEX function rgbToHex($color) { $red = dechex($color[0]); $green = dechex($color[1]); $blue = dechex($color[2]); return "#" . $red . $green . $blue; }
И пример использования:
$colorHex = '#FFAA00'; $result = hexToRgb($colorHex); var_dump($result); $colorRgb = array(255, 0, 0); $result = rgbToHex($colorRgb); var_dump($result);
Спасибо конечно! Но криво они работают…
не верный цвет на выходе, а именно:
Эта функция:
// перевод цвета из RGB в HEX
function rgbToHex($color) {
$red = dechex($color[0]);
$green = dechex($color[1]);
$blue = dechex($color[2]);
return «#». $red . $green . $blue;
}
Тестируем:
$colorRgb = array(255, 0, 0);
$result_HEX = rgbToHex($colorRgb);
На выходе имеем — не корректное значение: result_HEX: #ff00