XYZ→hex変換
X、Y、Zを入力すると、画面の色がカラーコードで得られます。0、0、0なら純粋な黒の#000000です。画面で表せない値はエラーにせず、最も近い表示可能な色に寄せます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X
- 0
- Y
- 0
- Z
- 0
- 抵抗(Ω)
- 0
- G
- 0
- B
- 0
- Hex
- #000000
このXYZ→hex変換ツールは、CIE 1931の三刺激値X・Y・Zの三つを受け取り、Webで用いられるD65白色点のもとで決定的な6桁のsRGB十六進カラーを返します。エンジンは標準のD65 sRGB→XYZ行列の逆行列で乗算し、単位立方体の外に出た線形チャネルをクランプし(真に色域外の刺激は表示可能な最近傍の端へ写像)、IEC 61966-2-1のガンマ符号化を適用し、0–255チャネルを小文字hexに詰め、ネットワーク呼び出し・乱数・時計の読み取りは一切行いません。
CIE XYZからhexへの変換の意味と応答に含まれる内容
CIE XYZは、Yが相対輝度を追い、XとZが残りの分光刺激を担うデバイス非依存の三刺激空間です。Webと多くの民生ディスプレイはsRGBを話し、ガンマ符号化された8ビットの三チャネルをハッシュ記号と六桁の十六進数字として包みます。
両者をつなぐには固定のイルミナントと原色が必要で、ここではイルミナントD65とIEC 61966-2-1に定められたsRGB原色を用います。相対XYZがWebの通例で、拡散白はXnが0.95047、Ynが1.0、Znが1.08883付近にあり、純黒は原点です。本計算機はご指定のX・Y・ZにD65 sRGB行列の逆を掛け、線形の赤・緑・青の光を得ます。
ゼロ未満または1超の線形チャネルは単位区間にクランプされ、色域外スペクトルでも負のバイトやNaNではなく定義された画面色が得られます。続いてガンマ符号化が線形光を非線形sRGB曲線へ写し、チャネルを二百五十五倍して整数に丸め、六つのニブルが#RRGGBBを形成します。NaNを黙って黒にする経路も代替白色点もこのページにはありません。
Adobe RGB・ProPhoto・Lab包装が必要なら専用ツールをご利用ください。
XYZ→hex変換がデザイン・科学・ソフトウェアで果たす役割
ディスプレイ校正ラボは分光測色計のXYZ読み取りをsRGB hexに変え、ブランドスウォッチやUIモックとの目視確認に使います。D65下の中間XYZを既に持つ色管理パイプラインは、サーバーレス関数に完全なICCエンジンを引き込まずにCSSトークンまでの最後の一里を必要とします。
アクセシビリティとデザインシステムのチームはブランドの赤やニュートラルについて測定・計算したXYZを文書化し、製品に載るクランプ済みsRGB hexを公開して、エンジニアリングとマーケティングが一つの文字列を共有します。学生はXYZを学んだ後、ガンマとhex詰めの実装前に、コンピュータグラフィックスと色彩科学の授業でこの写像に出会います。
決定的なオラクルがあれば、不透明なデスクトップ電卓なしに宿題を確認できます。逆方向や知覚的な中間が必要なときはRGB→Labやhex→RGBのツールと組み合わせ、色の衛生のための小さなラボを組むときは他の無料決定的変換器と併せてください。
活用例
ラボとディスプレイ校正の記録
D65下で測定または計算したCIE XYZをCSSの#RRGGBBにし、目視確認・ブランドトークン・校正レポートに使います。
宿題と教材デモ
学生のXYZ→sRGBの答え合わせや色域クランプのライブデモを、不透明な電卓アプリなしで行えます。
よくある質問
どの白色点と原色を使いますか?
標準sRGB原色(IEC 61966-2-1)のイルミナントD65です。
XYZがsRGB色域の外にあるとどうなりますか?
線形RGBチャネルはガンマ符号化の前に[0, 1]へクランプされます。いずれかがクランプされたとき clamped は true になり、なお有効な六桁hexを返します。
白になるのはどんなXYZの値ですか?
一般的な相対尺度では、D65のもとで拡散白色はおよそX 0.95047、Y 1.0、Z 1.08883です。これに近い値ならほぼ白のコードが返り、0、0、0なら純粋な黒になります。
カラーコードは大文字ですか、小文字ですか?
主な結果は#付きの小文字6桁のコードで、#000000のようにそのままウェブで使えます。大文字版と#なし版も表示されるので、お使いのソフトに合うほうを貼り付けられます。
3つの値はすべて必要ですか?
はい。X、Y、Zはすべて必須で、有限の数値である必要があります。足りない場合は色を作らずにお知らせします。実際の測定値は画面の範囲を超えることがあるため、各値に固定の上限はありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/xyz-hex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x":0.4124564,"y":0.2126729,"z":0.0193339}'const res = await fetch("https://api.kit.forhosting.com/color/xyz-hex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/xyz-hex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/xyz-hex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x":0.4124564,"y":0.2126729,"z":0.0193339}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x":0.4124564,"y":0.2126729,"z":0.0193339}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/xyz-hex", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.xyz_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
欠落または非有限の成分は色を捏造せず invalid_input で失敗します。
CIE XYZからhexへの変換の意味と応答に含まれる内容
成功ペイロードは検証済みのx・y・z(安定JSON用に丸め)、整数r・g・b、先頭ハッシュ付きhex、なしのhex_no_hash、A–Fを好むスタイルシート向けuppercase、rgb()関数文字列、いずれかのチャネルが色域端に触れたとき真となるboolean clamped、white_pointをD65、methodをxyz_to_hex、短い式の覚え書きを返します。エンジンは三つの有限三刺激数から六桁hexを作るか、invalid_inputで要求を拒否します。
X・Y・Zの読み取り・検証・再現可能な変換の流れ
X・Y・Z自体に絶対範囲検査はなく、測定スペクトルはsRGB立方の外の値を出し得ます。契約は測定を拒むのではなく、導出された線形RGBをクランプすることです。検証後の変換は閉形式の算術のみで、逆行列のチャネルごとの三回の乗加算、三回のクランプ、三本のガンマ分岐、三回のスケールと丸め、固定桁アルファベットでのニブル詰めです。純黒のXYZゼロはclamped falseで#000000へ、D65白は#ffffffへ、sRGB赤原色付近の純赤刺激は#ff0000へ写ります。推奨フィールドは小文字のx・y・zですが、大文字のX・Y・Zエイリアスも受け付け、計測ログ・表計算・型付きフォームが列名を変えずに再利用できます。数値文字列の外側空白はトリムされ、JSON数値と数値文字列の両方が使えます。トリム後の空文字、欠落フィールド、オブジェクト、配列、Infinity、NaNはフィールド名を示し有限のCIE XYZ三刺激数が必要だと述べるメッセージで失敗し、invalid_inputとなり課金されません。自動パイプライン内で同一の数学結果が必要なときは、本ページの無料ブラウザ実行と有料APIを組み合わせてください。
XYZ→hex変換がデザイン・科学・ソフトウェアで果たす役割
本ページでは作業はすべてご利用のブラウザ内で走り、API経由では成功した変換ごとに $0.002 で、失敗した検証は課金されず、応答後に何も保存しません。無料の対話的探索と有料で同一のAPIという分割はKITのtier Aカタログの他項目と一致し、実験ノートやデザインレビューから自動パイプラインへ数学結果を変えずに移れます。
連携の活用例
決定的なデザイン・トークンfixture
XYZ列から再現可能なhex文字列を生成し、ユニットテスト・CIのgolden・デザインシステム・パイプラインに用います。
技術的な質問
XYZ→hex変換の料金は?
このページではブラウザで無料です。APIでは成功したリクエストが $0.002、無効入力は課金されません。
必須フィールドはどれですか?
有限数のx・y・z(エイリアスX・Y・Z)です。欠落、空文字、Infinity、NaNは invalid_input で拒否されます。
hexは大文字ですか小文字ですか?
主フィールドhexは先頭#付きの小文字です(例 #ff0000)。hex_no_hashはハッシュを省略し、uppercaseはA–Fの#RRGGBB形を返します。