RGBからHSLへ変換
RGBカラーを同等のHSL値へ変換し、デザインツール、スタイルシート、アプリケーションコードで扱いやすい、簡潔で予測可能な結果を取得できます。赤・緑・青の各チャンネルを0から255の範囲で入力してください。色相は0–360度、彩度と明度は0から100までのパーセント値で返されます。欠落した値、数値でない値、無限大、範囲外の値は自動補正せずエラーにするため、入力ミスを見逃さず、後続のカラーデータの信頼性を保てます。
無料で実行
RGBチャンネルを正しく入力する方法
赤・緑・青に対応する3つの数値フィールドを、短いフィールド名r、g、bで指定してください。各チャンネルは両端を含む0から255の範囲にする必要があります。0はそのチャンネルの強度がない状態、255は最大強度を意味します。別の計算から補間色が生成される場合に便利なため、範囲内の小数も入力できます。この変換では、無効な値を意図的に範囲内へ丸めません。負数、255を超える値、欠落値、数値でない値、無限大を指定すると、入力エラーを返します。厳密に検証することで、無効な元データが、もっともらしい誤った色へ気付かないまま変換されることを防ぎ、自動処理を安全にできます。最初の確認にはrを255、gを0、bを0にしてください。結果は色相0度、彩度100パーセント、明度50パーセントの赤になります。CSSから値をコピーする際は、rgb()の囲み、コンマ、パーセント記号を除き、チャンネルの数値だけを送信してください。入力を数値に限定することで、0–255のRGBスケールと、一部のデザインシステムが使用するパーセント表記との混同も避けられます。
HSL値が計算される仕組み
変換では、まず各RGBチャンネルを255で割って正規化します。次に、正規化した値の最大値と最小値を求めます。その平均が明度になり、差であるクロマによって、彩度と意味のある色相が存在するかを判断します。クロマが0の場合は無彩色です。彩度は0となり、色相環のどの位置も視覚的に区別できないため、慣例として色相も0を返します。有彩色では、現在の明度に応じてクロマを調整した値が彩度になります。色相は、どのRGBチャンネルが最大かによって決まります。赤・緑・青は色相環の異なる区画を占め、チャンネル間の相対的な差によって区画内の位置を決定します。色相は0以上360未満の度数で返されます。彩度と明度は100倍し、パーセント値として返します。結果は小数第4位までに丸めるため、実用的な精度を保ちながら、安定して読みやすい応答になります。これは標準的なRGBからHSLへの変換です。同じ色情報を並べ替える処理であり、カラーマネジメント、ガンマ補正、プロファイル変換は行いません。
デザインとアプリケーションでの活用方法
色のバリエーションを検討する場合、HSLはRGBより直感的に扱えることがあります。色相は色の系統、彩度は鮮やかさや灰色への近さ、明度は黒または白への近さを表します。ブランドカラーを変換した後、色相を維持したまま明度を調整すれば、ホバー、押下、無効などの状態色を作成できます。データ処理では、異なる形式のカラーレコードを共通のHSL表現へ統一してから、並べ替えやグループ化を行えます。品質検査では、返された値をデザイントークンと比較し、不正なRGBチャンネルを早期に拒否することも可能です。ただし、同じ数値幅の変更が同じ見た目の変化になるとは限りません。HSLは操作には便利ですが、知覚的に均等な色空間ではありません。正確な往復変換が必要な場合は、丸めによって再変換時にわずかな差が生じる可能性があるため、元のRGB値も保存してください。この処理は入力された数値だけで決まる決定論的な計算です。ネットワーク、乱数、時刻、外部カラーデータベースを使用しないため、同じ入力からは繰り返し同じ出力が得られ、テスト、ビルドスクリプト、API連携、再現可能なデザインシステム用ツールに適しています。
活用例
カラー操作画面の作成
保存済みのRGB値を変換し、エディターに色相・彩度・明度のスライダーを表示できます。
画面状態ごとの色を生成
基本色のHSL値を取得し、操作状態に合わせて明度や彩度を調整できます。
カラーデータの統一
RGBフィールドを一貫したHSL構造へ変換し、アプリデータ、テスト、レポートに利用できます。
よくある質問
入力できるRGB値を教えてください?
r、g、bはそれぞれ、両端を含む0から255までの有限な数値で指定してください。
結果はどの範囲で返されますか?
色相は0から360までの度数、彩度と明度は0から100までのパーセント値で返されます。
灰色の色相はどの値になりますか?
灰色には視覚的に意味のある色相がないため、慣例として色相0度、彩度0パーセントを返します。
範囲外のチャンネルは補正されますか?
いいえ。0未満または255を超える値は入力エラーとなり、元データの問題を明確に示します。
APIによる変換の料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザーでは同じ決定論的変換をローカルで実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/rgb-to-hsl \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":64}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-to-hsl", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 64
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-to-hsl",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 64
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-to-hsl", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":64}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":64}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-to-hsl", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"r": 255,
"g": 128,
"b": 64
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_to_hsl",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |