RGB→RGB555パック
RGBカラーを15ビットのRGB555ワードにパックします。オレンジの255, 128, 0は32256、つまり0x7E00になります。各チャンネルの上位5ビットを残す、VGAのハイカラーモードや古いPCゲームの形式です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 抵抗(Ω)
- 255
- G
- 128
- B
- 0
- R5
- 31
- G5
- 16
- B5
- 0
- 量子化したR
- 248
旧来のグラフィックスハードウェアは、色を3つの8ビットチャンネルではなく、15ビットのRGB555語として保存します。このRGBからRGB555へのパッキングは、0から255までの赤・緑・青の整数を受け取り、下位3ビットを捨てて各チャンネルを5ビットへ切り捨て、赤をビット14〜10、緑をビット9〜5、青をビット4〜0に詰めます。未使用の最上位ビットは常に0のままなので、詰め込まれた整数は0から32767のあいだに収まります。エンジンは完全に決定的で、ネットワークも乱数種も壁時計にも依存しません。パレット作業や宿題の確認にはブラウザで無料でご利用いただけます。
RGB555パッキングの意味と15ビット語の組み立て方
CSSや現代のペイントツールが使う8ビットsRGBでは、赤・緑・青のそれぞれに256段階があります。15ビットのハイカラー、いわゆるRGB555は、チャンネルあたり32段階しか残しません。歴史的な変換は知覚的な丸めではなく切り捨てです。
各8ビットチャンネルを3ビット右へシフトする、つまり8で整数除算して余りを捨てるのと同じです。純赤の255は31になり、中間グレーの128は16になり、0から7までの値はすべて0に潰れます。これら3つの5ビット欄を、赤をビット14〜10、緑をビット9〜5、青をビット4〜0とする符号なし整数へ詰めます。
ビット15は未使用で常に0と書くため、詰め込まれた語は32767、十六進の0x7FFFを超えません。これはWindowsの15ビット色、VGAハイカラーモード、多くのPCエンジンが文書化したRGB555配置であり、青が高位5データビットを占める一部携帯機のBGR555入れ替えではありません。
入力契約、切り捨て規則、クランプしない検証
rは赤、gは緑、bは青です。文字列チャンネルの外側空白は取り除きます。値が合法なのは、0から255までの有限な整数であるときだけです。
黙ったクランプも、いちばん近い段階への丸めもありません。7を3ビット右シフトすると0、8は1、255は31です。この切り捨てのみの規則は、VGAハイカラーDACや、15ビットフレームバッファを書く前に下位3ビットを捨てる無数のアセット変換器のハードウェア経路と一致します。
検証のあと、エンジンは5ビット赤を10ビット左へ、5ビット緑を5ビット左へ、5ビット青とそのままビットごとの論理和してrgb555を詰めます。したがってオレンジの255、128、0は31、16、0となり、32256すなわち0x7E00に詰まります。各チャンネルが255の白は最大値32767に詰まります。
黒は0に詰まります。 これらの三つ組を継続的インテグレーションの固定値にピン留めしてください。実装は時計を読まず、乱数を取らず、隔離の外へ出ないので、同じ入力がずれることはありません。
RGBからRGB555へのパッキングが役立つ場面と料金
レトロなツールチェーンは、パレット編集がVGAハイカラーモードや古いPCエンジンがビデオメモリに置いていたのと同じ15ビット語を出す必要があるとき、スプライト変換器が二進のパレット塊を書くとき、エミュレータ試験が詰め込んだフレームバッファを基準ダンプと比較するときに、この対応に出会います。
ROM改変やアセットパイプラインは、現代の8ビット見本を、本格的なグラフィックライブラリを立てずに、15ビット・ハイカラーの粗い32段階見え方へ落とすために使います。情報科学の授業では、きれいなビットシフト演習として使い、255を3ビット右シフトすると31になること、白の詰め込み語が0x7FFFであることを学生が確認できます。
歴史的形式の代替経路をまだ出荷するフロントエンド開発者や、5ビット量子化のあとのキャンバス書き出しの見え方を文書化する方も、スクリプトから同じ契約を呼べます。次の段がスタイルシートなら、ブラウザ無料のRGBからRGB555へのパッキングを十六進やHSL変換と組み合わせ、チャンネルあたり8ビットが必要なら24ビットRGB整数パッキングと組み合わせてください。
このページでは作業はすべてお使いの端末上で走ります。検証失敗は残高を消費せず、応答のあと何も保存しません。チャンネルを公開済みの8ビット範囲に保ち、rgb555を符号なし15ビット整数として扱えば、シフトを自ら書き直さずに、パレット、エミュレータ固定値、授業デモ向けの再現可能なハイカラー語が得られます。
活用例
VGAハイカラーのパレットと古いPCエンジン
8ビットの見本色を、VGAハイカラーモードや古典的なPCエンジンがビデオメモリに置いていた15ビットRGB555語へ変換します。
エミュレータ固定値とスプライト変換器
パレット項目とフレームバッファ画素を決定的なRGB555整数へ詰め、エミュレータ試験やアセット変換器が二進ダンプを検証できるようにします。
ビットシフトと5ビット量子化の授業
各チャンネルが3ビットの右シフトで切り捨てられ、赤がビット14〜10に詰まることを、学生が手書きのシフトなしで確認できます。
よくある質問
8ビットRGBをRGB555値へ詰めるにはどうしますか?
応答のrgb555は15ビット語((r>>3)<<10) | ((g>>3)<<5) | (b>>3)であり、十六進と15ビット二進文字列でも示されます。
各チャンネルはどのように5ビットへ切り捨てられますか?
エンジンは下位3ビットを3ビットの右シフト(8での整数除算)で捨てます。丸めはありません。 7は0、8は1、255は31になります。
詰め込まれたRGB555整数の範囲は何ですか?
0から32767(0x0000から0x7FFF)です。ビット15は未使用で0のままです。純白は32767に、純黒は0に詰まります。
チャンネルが0–255の外にあるとどうなりますか?
チャンネルはクランプも折り返しもされず、失敗した検証は課金されません。
255をパックすると、なぜ248として表示されますか?
丸めずに切り捨てるためです。下位3ビットを落とすと255は5ビット値の31になり、8ビットに戻すと248に相当します。0〜7は0になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/rgb-rgb555 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":0}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-rgb555", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-rgb555",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-rgb555", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-rgb555", 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": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_rgb555",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min_channel | 0 |
max_channel | 255 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
デザイナー、エミュレータ作者、レトロゲームのツールチェーンは、パレットやフレームバッファ、BIOSダンプがVGAモードや古いPCゲーム、多くのグラフィックスAPIで使われた歴史的な15ビット・ハイカラー配置を期待するときに、この対応を使います。8ビットの合法範囲を外れたチャンネルは、黙って折り返したりクランプしたりせず、invalid_inputで失敗します。ビルドパイプラインで同じ契約が必要なときは、成功した項目ごとに$0.002でAPIを呼び出してください。
RGB555パッキングの意味と15ビット語の組み立て方
応答は元のr、g、bを返し、5ビット欄をr5、g5、b5として示し、5ビット値を3つ左へシフトして量子化後の8ビット見え方をquantized_r、quantized_g、quantized_bとして再構成し、詰め込んだ整数をrgb555として、0x付き十六進、4桁の大文字十六進、15文字の二進文字列、入力のcss_rgbエコー、メソッドタグrgb_to_rgb555、公式文字列、5であるbits_per_channel、32767であるmaxとともに公開します。経路は純粋な算術なので、同じ入力は常に同じJSONになります。
入力契約、切り捨て規則、クランプしない検証
POSTで、必須の3整数を含むJSON本体を送ってください。各欄はJSON数値でも数字列でも届いて構いません。別名のredと大文字R、greenと大文字G、blueと大文字Bも受け付けるので、表計算や型付きフォームが同じ契約を再利用できます。欠落欄、空文字、非数値テキスト、Infinity、NaN、128.5のような小数、負数、256以上のチャンネルは、欄名を示し0から255に収まらねばならないと述べるinvalid_inputで失敗します。これらの失敗は課金されません。
RGBからRGB555へのパッキングが役立つ場面と料金
API経由では成功したパッキングごとに$0.002です。
技術的な質問
RGBからRGB555へのパッキングは無料ですか。
ブラウザ用具はお使いの端末上で無料で走ります。API呼び出しは成功した項目ごとに$0.002の前払いKIT残高を使い、不正な入力は請求されません。