色空間を相互変換するWebツールです。カラーコード(16進数のRGB)、RGB(10進数)、HSV、HSLに対応しています。
- カラーコード、RGB、HSV、HSLのいずれかを入力すると自動で変換します。
- カラーコードは3桁の省略形でも入力できます。
例)#3F9 → #33FF99
※RGBとHSV/HSLの変換は不可逆です。これはRGBとHSV/HSLでは表現できる色の数が異なり、変換時に端数の丸めが発生するためです。
RGB: 256 × 256 × 256 = 16,777,216通り
HSV: 360 x 101 x 101 = 3,672,360通り
RGBとカラーコード(16進数)の変換計算式
RGBは一般的に各色を0から255までの256段階(= 8ビット分)で表現します。そのため16進数と相性が良く、ソフトウェア上ではよく16進数で表現されます。
16進数の場合は最初に#を付け、赤・緑・青の順に00~FFの16進数2桁ずつ計6桁で色を表現します。RGBであることに変わりはないですが、特にこの形式を指してカラーコードと呼ばれたりします。
#FF9933 = rgb(255, 153, 51)
また、CSSなどでは16進数カラーコードを3桁の省略形で指定できます。
#FF9933 = #F93
各色2桁ずつの計6桁を各色1桁ずつの計3桁に省略したもので、各桁を2回くり返す場合にのみ使用できます。
RGBからHSVへの変換計算式
R, G, Bのうち最大値をMAX、最小値をMINとします。
HSVの色相(H)を求める
MAXがR, G, Bのどれかによって求め方が変わります。
Rの場合:H=MAX−MING−B×60
Gの場合:H=MAX−MINB−R×60+120
Bの場合:H=MAX−MINR−G×60+240
HSVの彩度(S)を求める
S=MAXMAX−MIN×100
HSVの明度(V)を求める
S=255MAX×100
RGBからHSLへの変換計算式
R, G, Bのうち最大値をMAX、最小値をMINとします。
HSLの色相(H)を求める
HSVと同じ。
HSLの輝度(L)を求める
L=2MAX+MIN×255100
HSLの彩度(S)を求める
輝度によって求め方が変わります。
0≦L≦50の場合:
S=MAX+MINMAX−MIN×100
51≦L≦100の場合:
S=510−(MAX+MIN)MAX−MIN×100
HSVからRGBへの変換計算式
① HSVのH(色相)を変換する
Hは360の場合0とし、H ÷ 60を1で割った余り(=小数部)を求めます。
H′=60Hmod1
例)Hが90の場合:6090mod1=1.5mod1=0.5
② HSVのS(彩度)とV(明度)を変換する
SとVは百分率から小数に変換しておきます。
S′=100S
V′=100V
③ HSVのHの値に応じてRGBを決定する
無彩色(S = 0)を例外とし、Hの値に応じてR, G, Bの解を決定します。
A=V′×255
B=V′×(1−S′)×255
C=V′×(1−S′×H′)×255
D=V′×(1−S′×(1−H′))×255
条件 |
R |
G |
B |
S=0 |
A |
A |
A |
0≦H<60 |
A |
D |
B |
60≦H<120 |
C |
A |
B |
120≦H<180 |
B |
A |
D |
180≦H<240 |
B |
C |
A |
240≦H<300 |
D |
B |
A |
300≦H<360 |
A |
B |
C |
HSLからRGBへの変換計算式
① HSLのH(色相)を変換する
Hは360の場合0とします。
H=360の場合:H=H
H=360の場合:H=0
② HSLのL(輝度)を変換する
Lにおまじないをかけます。
0≦L<50の場合 :L′=L
50≦L≦100の場合:L′=100−L
③ HSLのHの値に応じてRGBを決定する
MAX=2.55×(L+L′×100S)
MIN=2.55×(L−L′×100S)
f(x)=60x×(MAX−MIN)+MIN
条件 |
R |
G |
B |
0≦H<60 |
MAX |
f(H) |
MIN |
60≦H<120 |
f(120 - H) |
MAX |
MIN |
120≦H<180 |
MIN |
MAX |
f(H - 120) |
180≦H<240 |
MIN |
f(240 - H) |
MAX |
240≦H<300 |
f(H - 240) |
MIN |
MAX |
300≦H<360 |
MAX |
MIN |
f(360 - H) |