16進数カラーコードをHSLに変換するPHP関数の実装と使い方
Web制作やプログラミングでは、16進数(Hex)形式のカラーコードをHSL(色相・彩度・輝度)形式に変換したい場面が少なくありません。特に、色の明るさや鮮やかさをプログラムで動的に調整したい場合、HSL形式の方が直感的に扱えます。
以下のPHP関数を使えば、16進数のカラーコードをHSL値に簡単に変換できます。
16進数をHSLに変換するPHP関数のコード
function hexToHsl($hex) {
// 先頭の「#」を除去
$hex = ltrim($hex, '#');
// 16進数を R・G・B の2桁ずつに分解
$hex_val = array($hex[0].$hex[1], $hex[2].$hex[3], $hex[4].$hex[5]);
// 各成分を 0〜1 の範囲に正規化
$rgb_val = array_map(function($part) {
return hexdec($part) / 255;
}, $hex_val);
$max_val = max($rgb_val);
$min_val = min($rgb_val);
// 輝度(L)を計算
$l = ($max_val + $min_val) / 2;
if ($max_val == $min_val) {
// グレー(無彩色)の場合は色相・彩度ともに 0
$h = $s = 0;
} else {
$diff = $max_val - $min_val;
// 彩度(S)を計算
$s = $l > 0.5 ? $diff / (2 - $max_val - $min_val) : $diff / ($max_val + $min_val);
// 色相(H)を計算
switch($max_val) {
case $rgb_val[0]:
$h = ($rgb_val[1] - $rgb_val[2]) / $diff + ($rgb_val[1] < $rgb_val[2] ? 6 : 0);
break;
case $rgb_val[1]:
$h = ($rgb_val[2] - $rgb_val[0]) / $diff + 2;
break;
case $rgb_val[2]:
$h = ($rgb_val[0] - $rgb_val[1]) / $diff + 4;
break;
}
$h /= 6;
}
return array($h, $s, $l);
}
関数の使い方
戻り値は array($h, $s, $l) の形式で、それぞれ 0〜1 の範囲の値が格納されています。CSSなどで実際に使用する場合は、以下のように変換すると便利です。
$hsl = hexToHsl('#FF5733');
echo 'hsl(' . round($hsl[0] * 360) . ', '
. round($hsl[1] * 100) . '%, '
. round($hsl[2] * 100) . '%)';
// 出力例: hsl(11, 100%, 60%)
処理の流れを解説
- 16進数の分解: 「#FF5733」のようなカラーコードを、R・G・Bそれぞれ2桁ずつに分割します。
- RGB値への変換:
hexdec()で16進数を10進数に変換し、255で割ることで 0〜1 の範囲に正規化します。 - 輝度(L)の計算: RGBの最大値と最小値の平均を求めます。
- 彩度(S)の計算: 輝度が 0.5 より大きいかどうかで計算式を切り替えます。
- 色相(H)の計算: RGBのどの成分が最大かによって式を使い分け、最後に6で割って 0〜1 の範囲に収めます。
この関数を活用すれば、カラーパレットの自動生成やテーマカラーの明暗バリエーション作成など、色を扱うさまざまな処理に応用できます。ぜひプロジェクトに組み込んでみてください。
-
PHPのlog()関数とは?自然対数の計算方法と使い方を解説
定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l
-
PHPのlcg_value()関数とは?乱数生成の基本と使い方を解説
lcg_value()関数の定義と使い方lcg_value()関数は、0から1までの範囲でランダムな数値(浮動小数点数)を生成するPHP組み込み関数です。「LCG」とは「線形合同法(Linear Congruential Generator)」の略称です。この手法は、不連続な区分線形方程式を用いて擬似乱数列を計算するアルゴリズムで、擬似乱数生成アルゴリズムの中でも最も古くから知られているものの一つです。構文lcg_value ( void ) : floatパラメータこの関数は引数を受け取りません。戻り値lcg_value()関数は、0.0以上1.0以下の範囲にある擬似乱数のfloat値を返し