Что было бы хорошим способом конвертировать значения шести цветов, такие как #ffffff
, в единые значения RGB 255 255 255
с использованием PHP?Преобразование шестнадцатеричного цвета в значения RGB в PHP
ответ
Заканчивать HexDec PHP() и DecHex() функции http://php.net/manual/en/function.hexdec.php Пример:
$value = hexdec('ff'); // $value = 255
вопрос был отредактирован –
@den Этот ответ должен все еще работать нормально даже с отредактированным вопросом. –
Если вы хотите, чтобы преобразовать шестнадцатеричный в RGB можно использовать sscanf
:
<?php
$hex = "#ff9900";
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
echo "$hex -> $r $g $b";
?>
Выход:
#ff9900 -> 255 153 0
есть что-нибудь, поэтому я могу преобразовать, как я спросил в своем вопросе? Могу ли я выводить как # 000000 –
Хороший чистый подход с 'sscanf()', я помещаю это в свою коробку с волшебными трюками. К сожалению, похоже, что OP слишком ленив, чтобы понять, что вы делаете, и куда вы идете с этой идеей. – DaveRandom
вопрос был отредактирован –
попробуйте это , Он преобразует его аргументы (R, G, B) в шестнадцатеричные HTML-строке цвета #RRGGBB Аргументов преобразуются в целые числа и подрезал до 0..255 диапазона
<?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;
}
?>
ой и наоборот
# символ в начале может быть опущен. Функция возвращает массив из трех целых чисел в диапазоне (0..255) или false, если не распознает цветовой формат.
<?php
function html2rgb($color)
{
if ($color[0] == '#')
$color = substr($color, 1);
if (strlen($color) == 6)
list($r, $g, $b) = array($color[0].$color[1],
$color[2].$color[3],
$color[4].$color[5]);
elseif (strlen($color) == 3)
list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
else
return false;
$r = hexdec($r); $g = hexdec($g); $b = hexdec($b);
return array($r, $g, $b);
}
?>
вопрос был отредактирован –
Для всех, кому это интересно, это еще один очень простой способ сделать это. В этом примере предполагается, что существует ровно 6 символов и знак предшествующего фунта.
list($r, $g, $b) = array_map('hexdec', str_split($colorName, 2));
Вот пример опоры 4 различных входов (азбука, AABBCC, #abc, #aabbcc):
list($r, $g, $b) = array_map(function($c){return hexdec(str_pad($c, 2, $c));}, str_split(ltrim($colorName, '#'), strlen($colorName) > 4 ? 2 : 1));
Используйте 'ltrim ($ colorName, '#')' вместо '$ colorName', чтобы позаботиться о #, если он может быть там – mikeytown2
Я положил @ Джон Ответим и @ IIC замечании/идеи вместе в функция, которая может обрабатывать оба, обычные шестнадцатеричные цветовые коды и сокращенные цветовые коды.
Краткое объяснение:
С scanf я прочитал R, G и Ь значения из шестнадцатеричного цвета в виде строк. Не как шестнадцатеричные значения, как в ответе @ Джона. В случае использования сокращенных цветовых кодов строки r, g и b должны быть удвоены («f» -> «ff» и т. Д.), Прежде чем преобразовывать их в десятичные числа.
function hex2rgb($hexColor)
{
$shorthand = (strlen($hexColor) == 4);
list($r, $g, $b) = $shorthand? sscanf($hexColor, "#%1s%1s%1s") : sscanf($hexColor, "#%2s%2s%2s");
return [
"r" => hexdec($shorthand? "$r$r" : $r),
"g" => hexdec($shorthand? "$g$g" : $g),
"b" => hexdec($shorthand? "$b$b" : $b)
];
}
Я сделал функцию, которая также возвращает альфу, если альфа предоставляется в качестве второго параметра, приведенного ниже.
Функция
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 просто заменить return $rgb;
линию в функция return implode(array_keys($rgb)) . '(' . implode(', ', $rgb) . ')';
Преобразовать Цветовой код HEX в RGB
$color = '#ffffff';
$hex = str_replace('#','', $color);
if(strlen($hex) == 3):
$rgbArray['r'] = hexdec(substr($hex,0,1).substr($hex,0,1));
$rgbArray['g'] = hexdec(substr($hex,1,1).substr($hex,1,1));
$rgbArray['b'] = hexdec(substr($hex,2,1).substr($hex,2,1));
else:
$rgbArray['r'] = hexdec(substr($hex,0,2));
$rgbArray['g'] = hexdec(substr($hex,2,2));
$rgbArray['b'] = hexdec(substr($hex,4,2));
endif;
print_r($rgbArray);
Выход
Array ([r] => 255 [g] => 255 [b] => 255)
Я нашел эту ссылку здесь - Convert Color Hex to RGB and RGB to Hex using PHP
Мой подход, чтобы заботиться о шестигранных цветов с или без хэш , отдельные значения или значения пары:
function hex2rgb ($hex_color) {
$values = str_replace('#', '', $hex_color);
switch (strlen($values)) {
case 3;
list($r, $g, $b) = sscanf($values, "%1s%1s%1s");
return [ hexdec("$r$r"), hexdec("$g$g"), hexdec("$b$b") ];
case 6;
return array_map('hexdec', sscanf($values, "%2s%2s%2s"));
default:
return false;
}
}
// returns array(255,68,204)
var_dump(hex2rgb('#ff44cc'));
var_dump(hex2rgb('ff44cc'));
var_dump(hex2rgb('#f4c'));
var_dump(hex2rgb('f4c'));
// returns false
var_dump(hex2rgb('#f4'));
var_dump(hex2rgb('f489'));
Вы можете попробовать этот простой фрагмент кода ниже.
list($r, $g, $b) = sscanf(#7bde84, "#%02x%02x%02x");
echo $r . "," . $g . "," . $b;
Это вернет 123.222.132
//if u want to convert rgb to hex
$color='254,125,1';
$rgbarr=explode(",", $color);
echo sprintf("#%02x%02x%02x", $rgbarr[0], $rgbarr[1], $rgbarr[2]);
Вы можете использовать функцию hexdec(hexStr: String)
, чтобы получить десятичное значение шестнадцатеричной строки.
Ниже для примера:
$split = str_split("ffffff", 2);
$r = hexdec($split[0]);
$g = hexdec($split[1]);
$b = hexdec($split[2]);
echo "rgb(" . $r . ", " . $g . ", " . $b . ")";
Это напечатает rgb(255, 255, 255)
- 1. Преобразование шестнадцатеричного цвета в RGB и наоборот
- 2. Преобразование цвета шестнадцатеричного или rgb в значения fecolormatrix
- 3. Преобразование цвета RGB в OLE_Color
- 4. конвертировать из шестнадцатеричного цвета в RGB
- 5. Преобразование значения цвета RGB в шестнадцатеричный
- 6. Преобразование целочисленного значения цвета в RGB
- 7. Преобразование цвета RGB в CMYK?
- 8. Преобразование цвета RGBA в RGB
- 9. Изменение цвета представления с использованием значения RGB или шестнадцатеричного значения цвета в swift
- 10. Преобразование шестнадцатеричного цвета в целое число
- 11. Преобразование шестнадцатеричного значения в C#
- 12. Преобразование шестнадцатеричного значения в ascii
- 13. процентов к значению цвета шестнадцатеричного
- 14. Преобразование десятичного BGR цвета в отдельные десятичные значения RGB
- 15. Преобразование целых чисел в растровые цвета Значения RGB C++
- 16. Преобразование заданного значения цвета контура в код rgb
- 17. convering шестнадцатеричного в RgB результата в белом
- 18. Полупрозрачный цвет фона в CSS от шестнадцатеричного значения RGB
- 19. Функция, которая преобразует значения шестнадцатеричного цвета в приблизительное имя цвета?
- 20. Преобразование значения RGB в UIColor?
- 21. Преобразование значения RGB в HSV
- 22. Генерирование градиентов из шестнадцатеричного кода или RGB в PHP/jQuery?
- 23. Преобразование 8-битного индексированного цвета в RGB
- 24. Преобразование цвета css в 16-разрядный rgb
- 25. Преобразование RGB в RGBA
- 26. Преобразование шестнадцатеричного значения в float в C
- 27. Преобразование значения int в цвет RGB
- 28. Получения ошибки преобразования шестнадцатеричного значения в RGB в Swift
- 29. Цвет шестнадцатиричного цвета до цвета rgb неточен?
- 30. Преобразование цвета в RRRGGGBBB
Эти два шестигранных являются того же типа? Сначала представляем белый, второй черный ... что вы пытаетесь сделать? – BenOfTheNorth
'$ выход = Sprintf ('% 06x', 0xffffff - HexDec (LTRIM ($ ввода, '#'));' однако это, вероятно, слишком упрощенным, и вы, вероятно, хотите, чтобы проанализировать компоненты RGB отдельно, пожалуйста, объясните точно, что это вы хотели сделать. – DaveRandom
вашего пример целевого представления (а) не образует представление цвета, которую я видел, и (б) не соответствует вашему «без' '#» требования. – Quentin