PHP: 16進数のカラーコードをRGBAに変換して不透明度を変える関数

とある16進数のカラーコードを任意の不透明度に変更したい場合に使えるPHPの関数をメモ。

かなりマニアックだとは思うけど、プログラムで変換できるのは便利な場面があるかも。

実際のコード

細かな処理は省いていますが、最低限はこんな感じ。16進数かどうかのチェックは走っていないので、16進数以外の数値が入るとおかしなことになるかもしれませんね。

function bge_color_convert_rgba($color_hex, $color_alpha = 0.1)
{
    if(!$color_hex) {
        return;
    }
	$code_red = hexdec(substr($color_hex, 1, 2));
	$code_green = hexdec(substr($color_hex, 3, 2));
	$code_blue = hexdec(substr($color_hex, 5, 2));

    return 'rgba(' . $code_red . ', ' . $code_green . ', ' . $code_blue . ', ' . $color_alpha . ')';
}

使い方

使い方は以下の関数のような形で呼び出す。
以下は #1bb4d3 を代入した例。

bge_color_convert_rgba('#1bb4d3', 0.1);

第一引数は必須で何も入っていない場合は何も起こりません。

第2引数は、色の透明度を0〜1の間で代入します。

0は完全な透明で、1は完全な不透明となります。

なので、0.1は10%の透明度ということになります。

おわり。