GPT-6 Sol・Claude Opus 5.5 提供開始GPT-6 Sol の料金は 5.6 Sol の半額

バーチャル試着 API:GPT Image 2 で服を着せ替える

写真 1 枚とプロンプト 1 つで服を変えられます。リクエストのコード、2026 年 10 月 28 日に実行した 3 回の着せ替え、そして結果がどこでずれるかを示します。

Kiki, OmniaKey COO読了目安 7分
このページの内容

はい、テキストプロンプトだけでできます。GPT-Image 2 の編集エンドポイントは、2026 年 10 月 28 日に実行した 3 回の着せ替えで、1 枚の写真の服だけを変え、ポーズ、顔、背景はそのまま保ちました。専用の服装入力はありませんが、今回の実行では 2 枚目の服の写真でドレスの丈が変わりました。結果は毎回、目で確認してください。

リクエストは OmniaKey のメディア API に対する画像編集です。元写真 1 枚、プロンプト、そして任意の参照画像を送ります。以下の関数は 2026 年 10 月 28 日に、プロンプトだけ変えて(黄色いレインコート)ベースモデルの 1024 ピクセル JPEG で確認し、1024x1536 の PNG が返りました。

画像編集で試着にできること、できないこと

画像編集は元写真とプロンプトから始まります。操作は edit で、元写真は Base64 のインライン、プロンプトには新しい服を書きます。OmniaKey の画像 API ドキュメント(2026 年 10 月 28 日確認)では、images 配列に複数の参照画像を入れられます。返るのは新しい 1 枚なので、人物はそのままで服だけが変わります。今回の実行では、顔、ポーズ、髪、スタジオ背景が保たれました。

試着で効いてくる制約は 2 つです。服装だけを入れる専用フィールドはないので、モデルは説明か 2 枚目の写真から服を描きます。また、指定していない細部まで新しい画像で変わる可能性があります。試着機能は結果を見せて、購入者が似合いを判断できるようにするのがよいでしょう。同じ操作は画面から物体を消す作業にも使えます。指示による編集全般はFLUX Kontext の代替ガイドを参照してください。

写真と服のプロンプトを送る

https://api.omniakey.com/v1/media/tasks に POST を送ります。Bearer キー、JSON ボディ、Idempotency-Key ヘッダーを付けます。OmniaKey の画像 API ドキュメント(2026 年 10 月 28 日確認)によると、作成時は HTTP 202 とタスク id が返ります。ステータスが queued か processing の間はタスク URL をポーリングします。succeeded なら素材の準備完了、失敗したタスクは error.code と error.message を持ち、課金されません。

タスクのフィールドは次のように設定します:

フィールド値
modelgpt-image-2
typeimage
operationedit
input.prompt服の指示
input.image元写真を data と mime_type のオブジェクトで
input.images追加の参照写真
parameters.sizeWIDTHxHEIGHT
parameters.qualitylow、medium、high、auto
parameters.n1

リクエストは 1 MiB 未満に抑えます。インライン Base64 もこの上限に含まれるためです。サンプル数は 1 である必要があり、API は常に不透明な PNG を返すので、実際の寸法はダウンロードしたファイルから読み取ります。

関数は次のとおりです:

python
import base64
import json
import os
import time
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]


def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)


def edit_image(source_path, prompt, out_path, size="1024x1536", quality="medium"):
    with open(source_path, "rb") as f:
        image = base64.b64encode(f.read()).decode()
    body = {
        "model": "gpt-image-2",
        "type": "image",
        "operation": "edit",
        "input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
        "parameters": {"size": size, "quality": quality},
    }
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    for _ in range(150):
        time.sleep(4)
        state = request("GET", f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # 署名付きリンクは約 1 時間有効なので、すぐダウンロードする
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task
if __name__ == "__main__":
    task = edit_image(
        "vto-base.jpg",
        "Change the outfit: she now wears a red satin slip dress with thin straps that falls to mid-calf. Keep the same pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos.",
        "vto-slip.png",
        size="1024x1536",
    )
    print("task", task)

署名付きの素材 URL は約 1 時間有効で、ファイルは 24 時間保持されます(同じドキュメント、2026 年 10 月 28 日確認)。タスクが成功したらすぐにダウンロードしてください。2026 年 10 月 28 日の確認では、黄色いレインコートのプロンプトをベースモデルの 1024 ピクセル JPEG に使い、1024x1536 の PNG が返りました。スクリプトは User-Agent ヘッダーを送ります。今回の実行では Python の既定値が HTTP 403 で拒否され、ヘッダーを足すと通りました。

実行した 3 回の着せ替え

3 回とも同じ合成写真から始めました。白いクルーネック T シャツと濃紺のジーンズを着た女性が、無地の薄いグレーのスタジオに立つ写真です。2026 年 10 月 28 日の実行では、1024x1536、品質 medium で作りました。

1 回目は、ふくらはぎ丈で、細いストラップが付いた赤いサテンのスリップドレスを指定しました。ドレスは出て、ポーズ、顔、髪、背景は同じままでした。頼んでいないのに、白いスニーカーが白いストラップ付きヒールに変わりました。

2 回目は、クリーム色のシルクキャミソールの上に濃い緑のウールブレザー、黒のストレートパンツを指定しました。3 点とも現れ、白いスニーカーは残りました。

3 回目は、紺と白の横縞の長袖トップスで、左胸に小さな赤い刺しゅうハートを指定しました。縞とハートは左胸に収まり、濃紺のジーンズと白いスニーカーは残りました。

スタジオで撮った 4 枚の人物写真:元の白い T シャツとジーンズ、赤いサテンのスリップドレス、濃い緑のブレザー、縞のトップス
元画像と、テキストだけで行った 3 回の着せ替え。どの写真もポーズ、顔、スタジオ背景は同じです。

ここに登場する人物と場面はすべて合成で、各プロンプトは 1 回だけ実行したので、画像はどれも 1 サンプルです。

2026 年 10 月 28 日に OmniaKey API 経由の GPT-Image 2 で生成。サイズ 1024x1536、品質 medium。

服の写真を 2 枚目の参照にする

より近づけたいときは、服を 2 枚目の画像として送ります。人物写真を 1 枚目、平置きした赤いサテンのスリップドレスを 2 枚目に置き、input.images と次のプロンプトを使いました。"Dress the woman in the first image in the red satin slip dress shown in the second image. Keep her pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos."

ドレスは床まで届き、平置き写真の丈に近づきました。同じドレスをテキストだけで指定した版は、ふくらはぎ丈で止まりました。今回の 1 サンプルでは、言葉で曖昧だった丈を服の写真が補いました。

3 枚のパネル:平置きした赤いスリップドレス、床まで届く同ドレスを着たモデル、ふくらはぎ丈で止まるテキストのみの版
左:送った服の写真。中央:2 枚入力すると、丈が写真に従う。右:同じドレスを言葉だけで指定した結果。

どこがずれたか

ずれはプロンプトに書かなかった部分に出ました。スリップドレスの回では、プロンプトがドレスだけを指定したのに靴が変わりました。購入者に見せる前に、顔、手、裾、靴、柄を原寸で確認してください。プリントロゴのある服、商品写真の正確な生地柄、3 枚以上の画像はテストしていません。

専用の試着 API が向く場合

専用の試着 API は、人物と服を別々の入力として受け取ります。Google の Vertex AI ページ「Generate Virtual Try-On Images」(最終更新 2026 年 10 月 26 日、2026 年 10 月 28 日確認)にはこうあります。"You provide an image of a person and an image of a clothing product." 同じページには personImage と productImages が Base64 フィールドとして、sampleCount が 1 から 4 として、モデル ID virtual-try-on-001 が載っています。Vertex AI のドキュメントは今後更新されないという注記もあります。

服の写真が正解で、1 回のリクエストに複数サンプルが必要なら、この種のエンドポイントを選びます。着せ替えとその他の編集を 1 つのパイプラインにまとめたいなら、1 回 1 枚でも GPT-Image 2 の編集を選びます。

OpenAI の料金ページ(2026 年 10 月 28 日確認)によると、gpt-image-2 はトークン単位で課金されます。ページにはトークン料金が載り、画像 1 枚ごとの表はなく、画像生成ガイド内の計算ツールへ誘導されています。OmniaKey の現在の料金は料金ページにあります。

着せ替え用プロンプトのテンプレート

今回の実行でうまくいった形を使います。服を先に書き、人物とセットを固定します。

Change the outfit: she now wears [garment, colour, fabric, length]. Keep the same pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos.

  • 服:色、素材、丈を 1 文で。「A red satin slip dress with thin straps that falls to mid-calf」で明確に変わりました。
  • 固定する項目:ポーズ、顔、髪、体、背景、照明。プロンプトに明示して列挙します。
  • 仕上げ:「Photorealistic, no text, no logos.」今回のプロンプトはこの終わり方を使いました。
  • 靴:残す必要があるなら名指しします。例えば「keep the white sneakers」です。スリップドレスの回は靴に触れず、靴が変わりました。

丈が言葉より大事なら、2 枚目の画像を足します。人物を 1 枚目、服を 2 枚目に置き、プロンプトでは「the first image」と「the second image」で参照します。今回と同じやり方です。プロンプト全体の順序はGPT Image 2 プロンプトガイドを参照してください。

よくある質問

GPT Image 2 API に専用のバーチャル試着エンドポイントはありますか?

いいえ。OmniaKey のモデルページ(2026 年 10 月 28 日確認)にはテキストから画像と画像編集が載っています。今回の実行では、試着はテキストプロンプトと任意の 2 枚目の画像を使った編集でした。

服の写真は送れますか?

送れます。input.images の 2 枚目の参照画像として入れます。2026 年 10 月 28 日の実行では、平置き写真に合わせてドレスの丈が変わりました。

顔は同じままですか?

3 回の着せ替えと 2 枚参照の実行では、目視で同じでした。結果はどれも原寸で確認してから見せてください。

結果のリンクはどのくらい有効ですか?

約 1 時間です(OmniaKey の画像 API ドキュメント、2026 年 10 月 28 日確認)。ファイルは 24 時間保持されます。タスクが成功したらすぐダウンロードしてください。

どのサイズを指定すればよいですか?

size は WIDTHxHEIGHT で指定します。例えば 1024x1536 です。実際の寸法はダウンロードした PNG から読み取ります。今回の実行は 1024x1536、品質 medium でした。

まずは写真 1 枚と服のプロンプト 1 つから始めてください。GPT-Image 2 のページではモデルを、現在の料金は別途確認できます。

この記事で紹介しているモデル

バーチャル試着 APIGPT Image 2画像編集衣装変更API

関連記事

最近の記事