RGB→RGB565変換
RGBカラーをTFTディスプレイ向けの16ビットワードに変換します。オレンジの255, 128, 0は64512、つまり0xFC00になります。赤5ビット、緑6ビット、青5ビットを、丸めずに切り捨てて残します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 抵抗(Ω)
- 255
- G
- 128
- B
- 0
- Rgb565
- 64,512
- Hex
- 0xFC00
- 16進数の桁
- FC00
- ビット
- 1111110000000000
組み込みTFTコントローラ、マイクロコントローラ向けグラフィックスライブラリ、多くの携帯ゲーム機は、各画素を3つの独立した8ビットチャンネルではなく、1つの16ビットRGB565語として格納します。このRGBからRGB565へのパックツールは、0から255までの赤・緑・青の整数を受け取り、使わない下位ビットを切り捨てて詰めます。赤は5ビット、緑は6ビット、青は5ビットで、ILI9341、ST7735、ST7789、SSD1351、Adafruit GFX、TFT_eSPIが用いる古典的な16ビット配置に組み立てます。変換は完全に決定的で、丸めは行わず、ネットワークを呼ばず、時計にも依存しません。
RGB565パックの仕組みと応答に含まれる内容
8ビットsRGBでは、赤・緑・青のそれぞれが0から255までの整数であり、16ビットのフレームバッファが保持できる精度を超えています。RGB565は赤に5ビット、緑に6ビット、青に5ビットを充てます。人の目は緑に敏感なため、余分な1ビットはバンディングを最も減らす場所に使われます。
本ツールは業界標準の切り捨てを用い、丸めはしません。赤は右へ3ビット、緑は右へ2ビット、青は右へ3ビットシフトし、使わない下位ビットを捨てます。3つの欄は、赤を左へ11ビット、緑を左へ5ビットずらしたものと青とをビット単位の論理和で組み立て、0から65535までの一意な符号なし整数になります。
純黒は0、純白は最大値、純赤はおなじみの16進語F800、純緑は07E0、純青は001Fになります。256の黙ったラップも、捨てたビットの丸めも、経路上のネットワークや時計もなく、同じ3つ組は常に同じ16ビット語になります。
r・g・bの検証方法と切り捨てが誠実である理由
優先する欄は赤がr、緑がg、青がbです。文字列チャンネルの前後の空白は取り除かれます。先頭のプラスは、残りの文字が範囲内の整数として読める十進数字である場合に限り許可されます。
128.5のような値は丸められず検証に失敗し、負の値や256以上は、対象のチャンネル名を示し0から255の範囲内でなければならないと述べるメッセージとともに失敗します。欠落した欄と、空白除去後の空文字列も同じように拒否されます。
切り捨てが契約である理由は、Adafruit GFX、TFT_eSPI、ILI9341データシートの例、そしてほとんどすべてのArduino色マクロが右シフトで下位ビットを捨てるからです。rが255、gが128、bが0のときrgb565が64512であることを、シフトを手で再導出せずに継続的インテグレーションの固定値へ安全に置けます。
RGBからRGB565へのパックが役立つ場面
学生は、TFTフレームバッファを紹介する組み込みシステム科目、16ビット携帯機を対象とするゲームプログラミング実習、RGB565のビット配置を問う面接の準備問題でこれを見ます。
ツール作者は、パレット用ヘッダを埋めるビルドスクリプト、新しいドライバをこのオラクルと比較する性質テスト、CSSの16進とファームウェア語を一つの真実源から同時に出すデザイントークンのパイプラインから、同じ契約を呼び出します。このページでは処理はすべてブラウザ内で完結します。
次の消費者がスタイルシートならRGBから16進への変換と、24ビット語が必要ならRGBから十進整数へのパックと、組み込みパレットの衛生管理用の小さな実験室を組むときは他の無料で決定的な色ツールと組み合わせてご利用ください。
活用例
TFTファームウェアのパレット
ブランドのRGB三値を、ILI9341・ST7735・ST7789・Adafruit GFXの色表向けRGB565語へ変換します。
スプライトとフレームバッファの変換
オフライン素材を16ビットのC配列と、コントローラのバイト順に合うSPI上位・下位バイトへパックします。
決定的なドライバ試験
切り捨てRGB565の正解をCIに固定し、新しいグラフィック補助が黙って丸めへ切り替わらないようにします。
よくある質問
RGBをRGB565へ変換するにはどうすればよいですか?
応答のrgb565欄がパックされた16ビット語で、hexはファームウェアで使う接頭辞0x付き4桁形式です。
このパックツールは余分なビットを丸めますか、切り捨てますか?
切り捨てます。 赤と青は下位3ビットを捨て(>> 3)、緑は下位2ビットを捨てます(>> 2)。Adafruit GFX、TFT_eSPI、一般的なTFTコントローラの例と一致し、丸めはありません。
チャンネルが0–255の外にあるとどうなりますか?
チャンネルはクランプもラップもされないため、壊れたピッカーからの256が誤った画素になることはありません。
なぜ緑だけ6ビットで、赤と青は5ビットなのですか?
人の目は緑に敏感なため、RGB565は余分な1ビットをそこに使います。5-6-5分割は、本ツールが対象とする一般的なTFTコントローラの16ビット配置です。
純粋な赤・緑・青はどんな値になりますか?
純粋な赤はF800、緑は07E0、青は001Fになります。黒は0、白は最大値の65535です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/rgb-rgb565 \
-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-rgb565", {
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-rgb565",
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-rgb565", 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-rgb565", 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_rgb565",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
0から255の範囲外のチャンネルは、黙ってラップやクランプされるのではなく、明確なinvalid_inputエラーで拒否されます。ファームウェアのビルドや継続的インテグレーションの固定値が同じパック語を必要とする場合は、成功した1件あたり$0.002のAPIをご利用いただけます。
RGB565パックの仕組みと応答に含まれる内容
応答は検証済みのチャンネルr・g・bを繰り返し、パックした整数をrgb565として返し、接頭辞0x付きの4桁大文字16進文字列、4桁だけ、16文字の2進文字列、切り捨て後の欄r5・g6・b5、それらを再び左シフトして復元した8ビットチャンネルr_q・g_q・b_q、ILI9341系コントローラへのSPI転送がその順で期待する上位・下位バイト、元の色と量子化色のCSS rgb文字列、メソッドタグtruncate_rgb565、ビット公式、常に65535であるmaxを返します。
r・g・bの検証方法と切り捨てが誠実である理由
別名としてredと大文字R、greenと大文字G、blueと大文字Bも受け付けるため、表計算やクエリ文字列、型付きフォームでも列名を変えずに同じ契約を再利用できます。裸のJSON数値は、0から255の範囲の有限整数であるときにだけ受け付けます。復元チャンネルr_q・g_q・b_qは、それらのビットが消えたあとにフレームバッファへ実際に載る色を示し、パレットを確定する前に必要な誠実なプレビューになります。
RGBからRGB565へのパックが役立つ場面
ファームウェアの著者は、ブランドガイドが8ビットRGB見本を列挙し表示ドライバがuint16_t色を求めるとき、スプライトシートをオフラインで16ビットのC配列へ変換するとき、シリアルログがパック語を印刷し机上が対応する16進定数を必要とするときに、この対応に出会います。API経由では成功したパックごとに$0.002かかり、検証の失敗は課金されず、応答のあと何も保存されません。無料の対話的な探索と、同一結果の有料APIという分離は、KITのtier-Aカタログの他項目と一致しており、机上デモや講義スライドから、パック結果を変えずに自動化されたファームウェアパイプラインへ移れます。
技術的な質問
RGBからRGB565へのパックは無料ですか。
ブラウザツールはお使いの端末上で無料で動きます。API呼び出しは成功した1件あたり$0.002でKITの前払い残高を使い、検証の失敗は課金されません。