とある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%の透明度ということになります。
おわり。