<?php
$rgba = 'rgba(80,80,80,0.5)';
function blendChannels(float $alpha, int $channel1, int $channel2): int
{
// blend 2 channels
return intval(($channel1 * $alpha) + ($channel2 * (1.0 - $alpha)));
}
function convertRGBAtoHEX6(string $rgba): string
{
// sanitize
$rgba = strtolower(trim($rgba));
// check
if (substr($rgba, 0, 5) != 'rgba(') {
return $rgba;
}
// extract channels
$channels = explode(',', substr($rgba, 5, strpos($rgba, ')') - 5));
// compute rgb with white background
$alpha = $channels[3];
$r = blendChannels($alpha, $channels[0], 0xFF);
$g = blendChannels($alpha, $channels[1], 0xFF);
$b = blendChannels($alpha, $channels[2], 0xFF);
return sprintf('#%02x%02x%02x', $r, $g, $b);
}
echo convertRGBAtoHEX6($rgba);
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
- #a7a7a7
preferences:
96.37 ms | 403 KiB | 91 Q