- Convert Color Hex to RGB and RGB to Hex using PHP
- Parameter:
- Return Value:
- rgb2hex2rgb() function is given below:
- Uses:
- Преобразование цветов в PHP
- DEC в HEX
- HEX в RGB
- Результат:
- Результат:
- RGB в виде массива:
- RGB в виде строки:
- RGB в HEX
- HEX в HSL
- Перевод цвета из HEX в RGB и обратно с помощью php
- Перевод цвета из HEX в RGB и обратно с помощью php. Код
- Convert HEX to RGB
- Comments
Convert Color Hex to RGB and RGB to Hex using PHP
This article will explain how to convert color code from HEX to RGB or HEX to RGB using PHP. We have created a PHP function for converting the color code to RGB or HEX. rgb2hex2rgb() function makes color conversion simple.
Parameter:
rgb2hex2rgb() function accept one parameter ( $color ) with two types of value RGB or HEX.
- $color => Required, from which you want to convert.
- RGB => 255,255,255 or 255 255 255 or 255.255.255
- HEX => #FFFFFF or FFFFFF
Return Value:
Returns RGB format color code as an array if Hex color code is passed into $color parameter. Returns HEX format color code as a string if RGB color code is passed into $color parameter.
rgb2hex2rgb() function is given below:
/**
*
* Author: CodexWorld
* Author URI: http://www.codexworld.com
* Function Name: rgb2hex2rgb()
* $color => HEX or RGB
* Returns RGB or HEX color format depending on given value.
*
**/
function rgb2hex2rgb($color) <
if(!$color) return false;
$color = trim($color);
$result = false;
if(preg_match("/^[0-9ABCDEFabcdef\#]+$/i", $color)) $hex = str_replace('#','', $color);
if(!$hex) return false;
if(strlen($hex) == 3):
$result['r'] = hexdec(substr($hex,0,1).substr($hex,0,1));
$result['g'] = hexdec(substr($hex,1,1).substr($hex,1,1));
$result['b'] = hexdec(substr($hex,2,1).substr($hex,2,1));
else:
$result['r'] = hexdec(substr($hex,0,2));
$result['g'] = hexdec(substr($hex,2,2));
$result['b'] = hexdec(substr($hex,4,2));
endif;
>elseif (preg_match("/^8+(,| |.)+6+(,| |.)+7+$/i", $color)) <
$rgbstr = str_replace(array(',',' ','.'), ':', $color);
$rgbarr = explode(":", $rgbstr);
$result = '#';
$result .= str_pad(dechex($rgbarr[0]), 2, "0", STR_PAD_LEFT);
$result .= str_pad(dechex($rgbarr[1]), 2, "0", STR_PAD_LEFT);
$result .= str_pad(dechex($rgbarr[2]), 2, "0", STR_PAD_LEFT);
$result = strtoupper($result);
>else $result = false;
>
return $result;
>Uses:
Use rgb2hex2rgb() function like the following.
$hexString = rgb2hex2rgb('255,255,255');
$rgbArray = rgb2hex2rgb('#FFFFFF');Are you want to get implementation help, or modify or enhance the functionality of this script? Click Here to Submit Service Request
If you have any questions about this script, submit it to our QA community — Ask Question
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
DEC в HEX
Цвет в формате десятичного числа (например 8675162 ) используется в библиотеке PHP GD. Пример конвертации цвета, полученного функцией imagecolorat() в HEX ( #000000 ).
$color = '#' . dechex(imagecolorat($img, 0, 0)); echo $color;
HEX в RGB
Цвет в формате HEX можно преобразовать в RGB следующим образом:
$hex = "#ff9900"; $rgb = sscanf($hex, "#%02x%02x%02x"); print_r($rgb);
Результат:
Array ( [0] => 255 [1] => 221 [2] => 102 )
$dec = hexdec("ff9900"); $rgb = array( 'red' => 0xFF & ($dec >> 0x10), 'green' => 0xFF & ($dec >> 0x8), 'blue' => 0xFF & $dec ); print_r($rgb);
Результат:
Array ( [red] => 255 [green] => 153 [blue] => 0 )
Но HEX может быть представлен в четырех вариантах: полный #ffdd66 , сокращенный #fd6 , с альфа-каналом #ffdd6655 и его краткой записью #fd65 .
Альфа-канал в CSS задается значением от 0 до 1 (0 – полностью прозрачный), в PHP используется от 0 до 127 (127 – полностью прозрачный), реже от 0 до 255 (0 – полностью прозрачный).
Учитывая все перечисленное, была написана универсальная функция, которая возвращает результат в виде массива или строки:
/** * Преобразование HEX в RGB * * @parm string $hex Цвет * @parm bool $return_string Результат в виде строки или массива * @return array|string|bool В случаи ошибки false */ function hexToRgb($hex, $return_string = false) < $hex = trim($hex, ' #'); $size = strlen($hex); if ($size == 3 || $size == 4) < $parts = str_split($hex, 1); $hex = ''; foreach ($parts as $row) < $hex .= $row . $row; >> $dec = hexdec($hex); $rgb = array(); if ($size == 3 || $size == 6) < $rgb['red'] = 0xFF & ($dec >> 0x10); $rgb['green'] = 0xFF & ($dec >> 0x8); $rgb['blue'] = 0xFF & $dec; if ($return_string) < return 'rgb(' . implode(',', $rgb) . ')'; >> elseif ($size == 4 || $size == 8) < $rgb['red'] = 0xFF & ($dec >> 0x16); $rgb['green'] = 0xFF & ($dec >> 0x10); $rgb['blue'] = 0xFF & ($dec >> 0x8); $rgb['alpha'] = 0xFF & $dec; if ($return_string) < $rgb['alpha'] = round(($rgb['alpha'] / (255 / 100)) / 100, 2); return 'rgba(' . implode(',', $rgb) . ')'; >else < $rgb['alpha'] = 127 - ($rgb['alpha'] >> 1); > > else < return false; >return $rgb; >
RGB в виде массива:
print_r(hexToRgb('#fd6')); // Array([red] => 255, [green] => 221, [blue] => 102) print_r(hexToRgb('#ffdd66')); // Array([red] => 255, [green] => 221, [blue] => 102) print_r(hexToRgb('#fd60')); // Array([red] => 255, [green] => 221, [blue] => 102, [alpha] => 127) print_r(hexToRgb('#ffdd6600')); // Array([red] => 255, [green] => 221, [blue] => 102, [alpha] => 127) print_r(hexToRgb('#ffdd6680')); // Array([red] => 255, [green] => 221, [blue] => 102, [alpha] => 63) print_r(hexToRgb('#ffdd66fa')); // Array([red] => 255, [green] => 221, [blue] => 102, [alpha] => 2)
RGB в виде строки:
echo hexToRgb('#fd6', true); // rgb(255,221,102) echo hexToRgb('#ffdd66', true); // rgb(255,221,102) echo hexToRgb('#fd60', true); // rgba(255,221,102,0) echo hexToRgb('#ffdd6600', true); // rgba(255,221,102,0) echo hexToRgb('#ffdd6680', true); // rgba(255,221,102,0.5) echo hexToRgb('#ffdd66fa', true); // rgba(255,221,102,0.98)
RGB в HEX
Функция для перевода RGB(a) в HEX(a) по отдельным компонентам цветов, с поддержкой альфа канала (значения 0. 127).
/** * Преобразование RGB в HEX * * @param intiger $red 0. 255 * @param intiger $green 0. 255 * @param intiger $blue 0. 255 * @param intiger $alpha 0. 127 * @return string */ function rgbToHex($red, $green, $blue, $alpha = null) < $result = '#'; foreach (array($red, $green, $blue) as $row) < $result .= str_pad(dechex($row), 2, '0', STR_PAD_LEFT); >if (!is_null($alpha)) < $alpha = floor(255 - (255 * ($alpha / 127))); $result .= str_pad(dechex($alpha), 2, '0', STR_PAD_LEFT); >return $result; >
echo rgbToHex(255, 221, 102); // #ffdd66 echo rgbToHex(255, 221, 102, 127); // #ffdd6600 echo rgbToHex(255, 221, 102, 63); // #ffdd6680 echo rgbToHex(255, 221, 102, 2); // #ffdd66fa
Вторая функия преобразовывает RGB-цвет из строки в формате CSS
rgb(255,221,102) или rgba(255,221,102,0.4) ./** * Преобразование строки «rgb(255,221,102)» в HEX * * @param string $color * @return string|bool */ function strRgbToHex($color) < preg_match_all("/\((.+?)\)/", $color, $matches); if (!empty($matches[1][0])) < $rgb = explode(',', $matches[1][0]); $size = count($rgb); if ($size == 3 || $size == 4) < if ($size == 4) < $alpha = array_pop($rgb); $alpha = floatval(trim($alpha)); $alpha = ceil(($alpha * (255 * 100)) / 100); array_push($rgb, $alpha); >$result = '#'; foreach ($rgb as $row) < $result .= str_pad(dechex(trim($row)), 2, '0', STR_PAD_LEFT); >return $result; > > return false; >
echo strRgbToHex('rgb(255,221,102)'); // #ffdd66 echo strRgbToHex('rgba(255,221,102,0)'); // #ffdd6600 echo strRgbToHex('rgba(255,221,102,.5)'); // #ffdd6680 echo strRgbToHex('rgba(255,221,102,0.98)'); // #ffdd66fa
HEX в HSL
function hexToHsl($hex) < $hex = trim($hex, ' #'); $red = hexdec(substr($hex, 0, 2)) / 255; $green = hexdec(substr($hex, 2, 2)) / 255; $blue = hexdec(substr($hex, 4, 2)) / 255; $cmin = min($red, $green, $blue); $cmax = max($red, $green, $blue); $delta = $cmax - $cmin; if ($delta === 0) < $hue = 0; >elseif ($cmax === $red) < $hue = (($green - $blue) / $delta) % 6; >elseif ($cmax === $green) < $hue = ($blue - $red) / $delta + 2; >else < $hue = ($red - $green) / $delta + 4; >$hue = round($hue * 60); if ($hue < 0) < $hue += 360; >$lightness = (($cmax + $cmin) / 2) * 100; $saturation = $delta === 0 ? 0 : ($delta / (1 - abs(2 * $lightness - 1))) * 100; if ($saturation < 0) < $saturation += 100; >$lightness = round($lightness); $saturation = round($saturation); return array($hue, $saturation, $lightness); >
Перевод цвета из HEX в RGB и обратно с помощью php
В этой статье я приведу пример двух функций, которые позволяют осуществлять перевод цвета из 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)
$colorHex = '#FFAA00'; $result = hexToRgb($colorHex); var_dump($result); $colorRgb = array(255, 0, 0); $result = rgbToHex($colorRgb); var_dump($result);
Convert HEX to RGB
Psst! Create a DigitalOcean account and get $200 in free credit for cloud-based hosting and services.
Comments
Thanks, I used it as a good starting point.
I’ve updated it slightly to be shorter and with the assumption the end hex is always 6 characters (as I control the input). The str_split() might be helpful for your code maybe? 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));
>I just realised I didn’t copy the entire code.
There’s a false missing off the end! heh…. 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;
>If anyone is interested in a javascript equivalent I used this (Not perfect but seems to do the job) : 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 + “)”;
>Thanks its really working. With some modification it can also b used for rgba color code just adding one more parameter.
I want to say that this site has high quality content.
Of course, the code above, was just what I wanted.thanks, you are a life saver. I needed this for a client project and had been playing for ages but I couldn’t get it quite right! Thanks again!