MCPで接続 →

計算を入力してください

公式

Show calculation steps (1)
  1. Hue

    Hue: HEXからHSLへのカラー変換ツール

    d = max - min; hue depends on which channel is the maximum, then multiplied by 60 degrees (a negative result wraps by +360).

広告

結果

HSLカラー
hsl(204, 70%, 53%)
色相 / 彩度 / 明度
色相(H) 204.07°
彩度(S) 69.87%
明度(L) 53.14%
赤(R) 52
緑(G) 152
青(B) 219

HEXからHSLへの変換ツールとは?

このツールは、16進数のカラーコード(CSSやデザインソフトでおなじみの#RRGGBB表記)を、HSLカラーモデル(Hue=色相、Saturation=彩度、Lightness=明度)に変換します。HSLは、HEXやRGBよりも直感的に扱えることが多いカラーモデルです。なぜなら、「どんな色か(色相)」「どれくらい鮮やかか(彩度)」「明るいか暗いか(明度)」という、人が色を感じるそのままの感覚で表現できるからです。標準的なsRGBのHEX表記であれば、あらゆるRGBベースの色に対応し、特定の国や規格に依存することはありません。

16進数のカラースウォッチがHSL円柱カラーモデルに変換される様子
16進数コードは、色相・彩度・明度で定義されるHSLカラーモデル内の位置に対応します。

使い方

#3498DBのようなHEXカラー値を入力してください。先頭の#はあってもなくても構いません。また、#0AFのような3桁の短縮形は、自動的に#00AAFFへ展開されます。変換ツールは、対応するHSLの3つの値に加えて、赤・緑・青の各チャンネル値(0〜255)もあわせて表示します。

計算式の解説

まず、HEX値を赤・緑・青のバイト値に分解し、それぞれを255で割って0〜1の範囲に正規化します。この3つの値のうち最大値をmax、最小値をminとします。明度(Lightness)はその平均で求められます:

$$L = \frac{\max + \min}{2}$$

maxとminが等しい場合(つまりグレー)は彩度(Saturation)は0です。それ以外で、\(L > 0.5\) のときは \(S = \dfrac{\max - \min}{2 - \max - \min}\)、そうでなければ \(S = \dfrac{\max - \min}{\max + \min}\) となります。色相(Hue)はどのチャンネルが最大値かによって決まり、60を掛けて度数に変換します。

$$H = 60^{\circ} \times \begin{cases} \dfrac{G - B}{d} \bmod 6, & \max = R \\[0.6em] \dfrac{B - R}{d} + 2, & \max = G \\[0.6em] \dfrac{R - G}{d} + 4, & \max = B \end{cases} \qquad d = \max - \min$$
RGBチャンネルの最大値と最小値が明度と彩度の計算式に入力される図
明度は最も明るいチャンネルと最も暗いチャンネルの平均から、彩度はその差から決まります。

計算例

#3498DBを例にとります。R = 52、G = 152、B = 219。正規化すると \(r \approx 0.2039\)、\(g \approx 0.5961\)、\(b \approx 0.8588\)。\(\max = b = 0.8588\)、\(\min = r = 0.2039\) なので、\(L = 0.5314\)(53.14%)となります。\(L > 0.5\) なので、

$$S = \frac{0.6549}{2 - 1.0627} = 0.6987\ (69.87\%)$$

青が最大値のため、

$$H = 60 \times \left(4 + \frac{0.2039 - 0.5961}{0.6549}\right) = 60 \times 3.4011 \approx 204.07^{\circ}$$

結果は hsl(204, 70%, 53%) です。

よくある質問

短縮形のHEXコードは使えますか? はい。#F0Cのような3桁のコードは自動的に展開されます。

HSL値は正確ですか? 色相・彩度・明度はフル精度で計算され、表示時にのみ四捨五入されます。丸める前の生の値も確認できます。

先頭の「#」は必須ですか? いいえ。先頭の#があってもなくても、どちらの値でも変換できます。

最終更新: