LABからhex変換
明度53.2408、aが80.0925、bが67.2032の色は#FF0000の純粋な赤になり、画面の範囲に収めるため切り詰めたことも表示されます。測定値を画面で使える色に変えられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- L
- 53.2408
- A
- 80.0925
- B
- 67.2032
- X
- 41.245661
- Y
- 21.267295
- Z
- 1.933391
- 抵抗(Ω)
- 255
このLABからhexへの変換ツールは、CIE L*a*b*座標を明確なD65変換経路で6桁のsRGB色文字列に変換します。L*、a*、b*を検証し、CIE XYZを復元して線形sRGBへ変換し、標準sRGB伝達曲線を適用して各チャンネルをバイトに丸めます。表示可能なsRGB色域外の色は安全にクリップされ、不正なチャンネルを生成せず応答内で識別されます。ネットワーク参照、乱数、時刻への依存はありません。
受け付ける入力と返される結果
数値座標を3つ入力してください。lはCIE L*明度、aは緑から赤の軸、bは青から黄の軸です。明度は0から100、各色度座標は-200から200の範囲で指定します。
応答には検証済みの座標が再掲され、一般的な0から100の尺度による中間値X、Y、Zも含まれます。falseなら制限前の変換結果がsRGB内に収まっています。trueなら少なくとも1つの線形sRGB成分が0未満または1超過であり、最も近い表示可能な境界へクリップされています。
その場合もhex結果は常に有効です。
LabからXYZを経てhex色になる計算
計算にはsRGBに対応する標準D65参照白色点を使用します。最初にL*、a*、b*を、一般にf-x、f-y、f-zと呼ばれる3つのピボット項へ組み替えます。各項にはCIE Labの逆ピボットを適用します。
6/29を超える値は3乗し、それ以下の値には対応する線形分岐を使います。その結果にD65参照白色点を掛けてCIE XYZを復元します。続いて固定の3×3行列でXYZを線形sRGBへ変換します。
LabはsRGB表示色域を超える色も表すため、この段階の成分が負または1より大きくても計算上は正当です。変換ツールは値を変更する前にその状態を記録します。次に各線形成分へ公式の区分的sRGBコンパンディング曲線を適用します。
符号化後の値を0から1に制限し、255倍して最も近い整数へ丸めます。最後に各バイトを大文字hex2桁に整形し、番号記号の後へ連結します。
色域情報と決定論的な結果の活用方法
Labが表現できる理論上の色は、一般的なsRGB画面で再現できる範囲より大幅に広いため、変換には表現不能な結果への明確な方針が必要です。この機能は単純で再現可能なチャンネルクリップを採用し、負の線形成分を0、1を超える成分を1にします。
CSS互換の具体的な代替色が必要な場合は生成されたhexを使用し、色再現性が重要な場合や将来の広色域処理に備える場合は元のLab座標も保存してください。品質管理ではtrueを、専用の色域マッピング方式で色を見直す根拠として扱えます。決定論も意図した設計です。
実装は固定の算術と整形だけを行い、時刻を読まず、乱数を使わず、外部サービスを呼ばず、端末のカラープロファイルやブラウザー描画にも依存しません。対話的な変換はブラウザーで無料です。
活用例
デザイントークンの公開
測定または設計したLabブランド色を、CSS変数、文書、アプリのテーマ向けに安定した6桁hex値へ変換します。
sRGB色域限界の確認
標準sRGB画面で表現する前にチャンネルのクリップが必要なLabサンプルを特定します。
よくある質問
LABからhexへの変換料金はいくらですか?
ブラウザーでは無料で実行できます。無効な入力は結果の生成前に拒否されます。
どの白色点を使用しますか?
標準sRGB変換経路に対応するD65参照白色点Xn 0.95047、Yn 1.00000、Zn 1.08883を使用します。
返されるhexは常に6桁ですか?
はい。 クリップ後の各RGBバイトを、先頭の0を含む大文字hex2桁で番号記号の後に表します。
この変換で透明度は保持されますか?
いいえ。 CIE Lab入力にはアルファ座標がないため、出力は8桁値ではなく不透明な6桁hex色です。
画面で表示できないLABの色はどうなりますか?
表示範囲から外れたチャンネルは最も近い端に寄せられるため、常に有効なhexが得られます。結果には範囲外の印が付き、極端な色では色相や鮮やかさが少し変わることがあります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/lab-hex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"l":53.2408,"a":80.0925,"b":67.2032}'const res = await fetch("https://api.kit.forhosting.com/color/lab-hex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"l": 53.2408,
"a": 80.0925,
"b": 67.2032
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/lab-hex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"l": 53.2408,
"a": 80.0925,
"b": 67.2032
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/lab-hex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"l":53.2408,"a":80.0925,"b":67.2032}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"l":53.2408,"a":80.0925,"b":67.2032}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/lab-hex", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"l": 53.2408,
"a": 80.0925,
"b": 67.2032
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.lab_hex",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
同じ決定論的計算をブラウザーとAPIの双方で利用でき、APIは成功したリクエスト1件につき$0.002です。
受け付ける入力と返される結果
この範囲は実用的なLab値を包含しつつ、変換前にフィールドの取り違え、無限大、欠損値、明らかに破損したレコードを検出します。さらに、整数の赤・緑・青チャンネル、番号記号から始まる大文字6桁のhex文字列、真偽値out_of_gamutを返します。検証エラーでは既定値を黙って代入せずinvalid_inputを使用します。
LabからXYZを経てhex色になる計算
中間XYZ値は読みやすく安定したJSONにするため小数点以下6桁へ丸めますが、RGB計算では浮動小数点の中間値を全精度で使用します。したがって表示チャンネルを丸め済みXYZフィールドから再計算せず、バイト境界付近で不要な精度低下を防ぎます。
色域情報と決定論的な結果の活用方法
極端な色ではクリップによって色相や彩度が変わる可能性があるため、out_of_gamutは無視すべき警告ではなく重要な情報です。同一のJSON入力は常に同一の出力になります。この特性はsnapshotテスト、buildパイプライン、データベース正規化、共有デザインシステムのツールに役立ちます。APIでは成功したリクエストごとに$0.002がかかり、同一の数学的経路をたどります。
連携の活用例
決定論的なテストfixtureの作成
色ライブラリー、インポーター、データ検証パイプライン向けに再現可能なXYZ、RGB、hex期待値を生成します。
技術的な質問
結果にout_of_gamutがあるのはなぜですか?
LabはsRGB外の色も表現できます。制限前の線形RGBチャンネルを0未満または1超過からクリップした場合にtrueになります。