RGB 色域クランプ
範囲外のRGB値を0~255の尺度に戻します。赤300、緑−20、青127.5は255、0、127.5になり、どのチャンネルが変わったかも分かります。途中で丸めることはありません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 抵抗(Ω)
- 300
- G
- -20
- B
- 127.5
- 抵抗(Ω)
- 255
- G
- 0
- Rgb
- rgb(255, 0, 127.5)
- 変更されたチャンネル
- r, g
RGB データに 0 未満または 255 を超えるチャンネルが含まれる場合、このツールで色を有効範囲へ制限できます。赤・緑・青を検証し、それぞれを独立して標準的な 8 ビット範囲の最も近い境界へ補正します。範囲内の値は小数も含めて変更しません。制限は境界を整える処理であり、丸め処理ではないためです。結果には、補正後の各チャンネル、読みやすい RGB 文字列、変更の有無、補正されたチャンネル名が含まれます。簡単な修正はブラウザーで行えます。
RGB 色を有効範囲へ制限する意味
8 ビット RGB 色では、通常、赤・緑・青を 0 から 255 までの両端を含む尺度で表します。この境界を外れたデータは、その範囲では直接表現できません。たとえば赤の 300 は上限を超え、緑の -20 は下限を下回ります。
クランプ処理では、0 未満の値を 0 に、255 を超える値を 255 にし、中間の値はそのまま保持します。各チャンネルは独立して処理されるため、赤を補正しても緑や青は変化しません。結果として制限済みの r、g、b と、同じ色を示す rgb 関数文字列を返します。
HSL、Lab、Display P3、CMYK を変換せず、変換後の見た目の色相を保つ処理も行いません。3 つの数値チャンネルを検証し、透明性と再現性を保って 0~255 の範囲に収めることに特化しています。
入力検証、小数チャンネル、決定論的な結果
3 チャンネルはすべて必須で、有限の数値でなければなりません。フォーム、CSV レコード、クエリ値で使われる厳密な数値文字列は受け付けます。有限値になる場合は科学表記も有効です。
検証後、各値に対して「255 と、0 またはチャンネル値の大きい方との最小値」という式を適用します。この式には、隠れたしきい値、ロケール規則、実行環境に依存する分岐がありません。範囲内の小数は維持されるため、127.5 は 127.5 のままです。
制限と丸めは別の演算であり、これは意図した仕様です。ネットワーク、現在日時、乱数、共有状態、外部モデルを一切使わないため、同じ有効入力からは常に同じシリアライズ結果が得られます。
RGB 制限を処理フローへ組み込む場所
色の値は、前提の異なる複数のシステムを通ることがあります。シェーダー計算は光を加えたときに上限を超え、画像解析の出力には小さな負の成分が入り、表計算の式は 255.2 を生成し、アニメーション補間は一時的に目標値を越える場合があります。
こうした値を Canvas、CSS 生成、サムネイル、機器プロトコル、デザイントークン向けの通常の RGB チャンネルへ渡す境界で、この制限処理が役立ちます。超過する可能性のある計算の後、範囲内の値を要求する処理の前に配置してください。変更情報はログや品質指標にも利用できます。
修正色を採用して処理を安定させながら、上流データに補正が必要だった事実も記録できます。恒常的に壊れた入力を隠す用途や、広色域の知覚的マッピングの代替には使用しないでください。同一のソルバーを共有するため、手動確認した例を規則変更なしで本番テストへ移せます。
活用例
レンダリング処理の安定化
計算結果を Canvas、CSS ジェネレーター、画像レンダラーへ渡す前に補正します。
再現可能なテストデータの作成
境界動作を検証し、処理が補正した RGB チャンネルを正確に記録します。
よくある質問
0 未満のチャンネルはどうなりますか?
0 になります。 ほかのチャンネルは個別に評価され、範囲内であれば変更されません。
255 を超えるチャンネルはどうなりますか?
対応する RGB チャンネル範囲の上限である 255 になります。
小数の RGB 値は丸められますか?
いいえ。 0~255 の有限値は保持されます。この機能は境界を制限し、精度を丸めないためです。
制限されずに拒否されるのはどんな値ですか?
チャンネルの欠落、文字、空欄、有限の数でないものは受け付けません。文字として書かれた数値や指数表記は、実数になる場合に受け付けます。
どのチャンネルが補正されたか分かりますか?
はい。結果には変更の有無と、補正したチャンネルが順に表示されます。赤300、緑−20、青127.5なら、青はもともと範囲内なので赤と緑だけが示されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/clamp-gamut \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":300,"g":-20,"b":127.5}'const res = await fetch("https://api.kit.forhosting.com/color/clamp-gamut", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 300,
"g": -20,
"b": 127.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/clamp-gamut",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 300,
"g": -20,
"b": 127.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/clamp-gamut", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":300,"g":-20,"b":127.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":300,"g":-20,"b":127.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/clamp-gamut", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"r": 300,
"g": -20,
"b": 127.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.clamp_gamut",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
パイプライン、インポート、テスト、デザインシステムの自動化では、1 リクエスト $0.002 の API をご利用ください。
RGB 色を有効範囲へ制限する意味
さらに changed 真偽値と、順序が固定された channels_changed リストも返すため、お客様が値を比較しなくても、入力がそのまま通ったのか修復されたのかを判定できます。この処理は、色空間変換、知覚的圧縮、異なる色空間間のガマットマッピングとは目的が異なります。
入力検証、小数チャンネル、決定論的な結果
推奨フィールドは r、g、b ですが、説明的な別名 red、green、blue も使用できます。一方、空文字列、単語、真偽値、配列、オブジェクト、Infinity、NaN は invalid_input として拒否します。負のゼロはゼロになり、JSON に不要な符号が残りません。changed は値が境界を越えた場合のみ真になり、channels_changed は対象の短い名前を赤・緑・青の一定順序で示します。
RGB 制限を処理フローへ組み込む場所
テストではチャンネル値と channels_changed の両方を確認すると、将来の変更で折り返し、丸め、色全体の拒否が混入するのを防げます。ブラウザーでは同じ純粋な実装が動作し、自動処理の API 成功リクエストは $0.002 です。
連携の活用例
インポートした RGB レコードの修復
表計算、CSV、API のチャンネルを標準 RGB データとして保存する前に範囲内へ収めます。
技術的な質問
API リクエストの料金はいくらですか?
成功した API リクエストは $0.002 です。同じ決定論的な処理をブラウザーでも実行できます。
どのような入力が拒否されますか?
欠落、空、数値以外、有限でないチャンネルは invalid_input になります。3 つの RGB チャンネルはすべて必須です。