I'm attempting to convert some rgba values into a format suitable for SubStation Alpha subtitle files. The .ass
file format requires a colour format like &H12345690
where the hex bytes are in blue, green, red, alpha order.
I am finding examples converting 8 digit hex colors into RGBA, but not the other way around. Here is a function I put together based one of the answers, but the alpha channel is always returned as zero:
function rgbtohex($string) {
$string = str_replace("rgba","",$string);
$string = str_replace("rgb","",$string);
$string = str_replace("(","",$string);
$string = str_replace(")","",$string);
$colorexplode = explode(",",$string);
$hex = '&H';
foreach($colorexplode AS $c) {
echo "C" . $c . " " . dechex($c) . "<br><br>";
$hex .= dechex($c);
}
return $hex;
}
But if I test it with rgba(123,223,215,.9)
it produces &H7bdfd70
which only has 7 characters instead of 8.
Also, the alpha channel (.9) always comes out to zero, so that doesn't appear to be working correctly.