RGBAアルファの事前乗算を解除して色チャンネルを復元
1ピクセルの事前乗算を元に戻します。赤0.125、緑0.25、青0.375、アルファ0.5なら、0.25、0.5、0.75に戻り、アルファはそのままです。アルファが0の場合やアルファを超える色は受け付けません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- Red
- 0.125
- 緑
- 0.25
- 青
- 0.375
- アルファ
- 0.5
- Red
- 0.25
- 緑
- 0.5
- 青
- 0.75
- RGBA 値
- 0.25, 0.5, 0.75, 0.5
RGBAアルファ事前乗算解除ツールは、正規化された事前乗算済みピクセルから直接形式の赤・緑・青チャンネルを復元します。0から1までの4つの数値を指定すると、各色成分をアルファで割り、元のアルファ値はそのまま保持します。事前乗算済みの色がアルファを超えていないことも検査し、元の色を復元できないアルファ0はエラーにします。決定的な結果には名前付きチャンネルと順序付きRGBA配列が含まれ、グラフィックツール、テスト、変換処理、画像パイプラインでそのまま利用できます。
事前乗算アルファと直接アルファの違い
RGBAデータの透明度には一般に2つの表現があります。直接アルファでは、元の赤・緑・青を不透明度と独立して保存します。事前乗算アルファでは、各色にアルファを掛けた値を保存します。
たとえば直接形式の赤が0.8、アルファが0.5なら、事前乗算後の赤は0.4です。事前乗算は複数の合成計算を簡潔にし、透明な輪郭の色にじみを抑えますが、保存値は元の色を直接表さなくなります。この機能は正規化された1ピクセルについて計算を逆に行い、赤・緑・青をアルファで割って、アルファは変更せず返します。
入力範囲は0から1であり、0から255のバイト値ではありません。そのため小数としての関係が明確です。結果は復元した各チャンネルを名前付きで示し、さらに赤、緑、青、アルファ順のRGBA配列も返すため、位置で値を扱う処理にも適しています。
アルファ0をエラーにする理由
事前乗算の解除は、アルファが0より大きい場合にだけ定義できます。アルファが0なら、正しく事前乗算された色チャンネルは、乗算前の直接色にかかわらずすべて0になります。したがって赤0、緑0、青0、アルファ0の透明ピクセルは任意のRGB色から生成された可能性があり、0除算から一意の答えを復元できません。
黒を返す、0を維持する、別の代替値を作るといった処理は、入力に存在しない情報を作ることになります。有限でない数、正規化範囲外の値、アルファを超える事前乗算済み色も拒否します。最後の検査は正規化データの不変条件を守り、直接色が1を超えることを防ぎます。
不正なピクセルがレンダラー、シェーダー、素材変換、または自動比較へ入る前に問題を確認できます。
活用例
合成計算の検証
既知の事前乗算サンプルをテストし、復元チャンネルを期待する直接値と比較します。
素材レコードの正規化
個別RGBAレコードを保存、検査、変換する前に、一貫した直接アルファ表現へ変換します。
よくある質問
どのチャンネル範囲を入力できますか?
4チャンネルすべてが0から1までの有限な正規化数値で、アルファは0より大きい必要があります。
事前乗算色がアルファを超えられないのはなぜですか?
1以下の正規化色にアルファを掛けても、アルファより大きな値にはならないためです。
色空間変換やガンマ補正も行いますか?
いいえ。 指定チャンネルの算術的な事前乗算解除だけを行います。色空間は別途変換してください。
復元したチャンネルを丸めたり制限したりしますか?
いいえ。 有効な入力は正規化範囲を保証し、各色は事前乗算値をアルファで直接割った結果です。
ストレートアルファと事前乗算アルファの違いは何ですか?
ストレートアルファは元の色を不透明度と分けて保存し、事前乗算アルファは各色にアルファを掛けた値を保存します。ストレートの赤0.8をアルファ0.5で事前乗算すると0.4になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/unpremultiply \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"red":0.125,"green":0.25,"blue":0.375,"alpha":0.5}'const res = await fetch("https://api.kit.forhosting.com/color/unpremultiply", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"red": 0.125,
"green": 0.25,
"blue": 0.375,
"alpha": 0.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/unpremultiply",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"red": 0.125,
"green": 0.25,
"blue": 0.375,
"alpha": 0.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/unpremultiply", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"red":0.125,"green":0.25,"blue":0.375,"alpha":0.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"red":0.125,"green":0.25,"blue":0.375,"alpha":0.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/unpremultiply", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"red": 0.125,
"green": 0.25,
"blue": 0.375,
"alpha": 0.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.unpremultiply",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
アルファ0をエラーにする理由
そのため本ツールは`invalid_input`を返します。
決定的な色復元を処理へ組み込む方法
0.125、0.25、0.375とアルファ0.5から、直接色0.25、0.5、0.75とアルファ0.5が得られます。丸め、色空間変換、ガンマ補正、クランプ、バイト量子化、乱数、時計、地域依存書式は使用しません。画像全体には、この単一項目の処理を上限付きピクセルパイプラインへ組み込み、元データが実際に事前乗算済みであることをご確認ください。画像ライブラリ、グラフィックAPI、キャンバス出力、テクスチャ処理、または保存済み素材が正規化された事前乗算チャンネルを返し、次のシステムが直接アルファを要求する場合にご利用ください。赤、緑、青、アルファの名前付きフィールドで1ピクセルを送信します。ECMAScriptの数値規則による直接除算なので、同じ有効なJSON入力はブラウザーとAPIで同じ結果になります。API料金は1リクエスト$0.002です。
連携の活用例
グラフィックAPI出力の変換
事前乗算ピクセルをRGBとアルファが独立したインターフェースへ渡す前に、正規化された直接色を復元します。
技術的な質問
アルファが0の場合はどうなりますか?
完全透明な事前乗算データから一意の直接色を復元できないため、`invalid_input`で失敗します。