Ниже попытки.
Есть ли у кого-нибудь какие-нибудь советы о том, как мне это сделать лучше?
Как мне это сделать? получить такой же цвет, но светлее?
Код: Выделить всё
public static function convertRGBAtoHEX6(string $rgba): string
{
if ( strpos( $rgba, '#' ) === 0 ) {
return $rgba;
}
preg_match( '/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i', $rgba, $by_color );
if(isset($by_color[4]))
{
$by_color[4] = 2 - $by_color[4];
$by_color[1] = $by_color[1] * $by_color[4];
$by_color[2] = $by_color[2] * $by_color[4];
$by_color[3] = $by_color[3] * $by_color[4];
}
return sprintf( '#%02x%02x%02x', $by_color[1], $by_color[2], $by_color[3] );
}
Ответ ниже аналогичен вопросу «Преобразование RGBA в HEX».
Разница в том, что ответ ниже гораздо более подробный, входит в PHP (в том числе о том, как умело разбивать строку RGBA в PHP), а также лучше работает в более легких областях.
Подробнее здесь: https://stackoverflow.com/questions/769 ... ode-in-php
Мобильная версия