OpenAI gpt-image-1 で画像を編集する方法(2025年版)
OpenAI の gpt-image-1 モデルを使えば、既存の画像をアップロードして背景を変える・一部を差し替えるといった編集が可能です。
この記事では 公式に利用可能な方法 を整理します。
⚠️ 重要な補足
- 参考画像をもとに新しい画像を生成する機能は、現時点の公式 API ではサポートされていません。
- 当初は
referenced_image_idsというパラメータが紹介されることもありましたが、公式ドキュメントには記載がなく、動作保証もありません。 - よって本記事では、確実に動作する 画像編集(Edits API) の方法を解説します。
1. 画像を編集する(Edits API)
アップロードした画像をベースに、マスク画像とプロンプトを指定して部分的に変更できます。
マスク画像は「透明部分=変更したい領域」「塗りつぶし部分=保持する領域」を意味します。
curl -X POST "https://api.openai.com/v1/images/edits" -H "Authorization: Bearer $OPENAI_API_KEY" -F "model=gpt-image-1" -F "image=@sample.png" -F "mask=@mask.png" -F 'prompt=キャラクターを保持しつつ、背景を夜景の街並みに変更してください' -o output.json
レスポンス JSON 内の data[0].url から生成結果をダウンロードできます。
curl -L "https://returned-image-url" -o result.png
2. 実用上のポイント
-
再現性の限界
- API ではシード値を指定できず、完全な再現は不可。
- 必要なら生成結果を保存して再利用する。
-
アップロードファイルの有効期限
- Edits API に渡す画像はファイル ID ではなく、画像データそのものを指定する。
- そのため、生成に使う画像は必ず手元に保存して管理するのが基本。
-
費用
- 1024×1024 (low) 画像生成:1枚あたり $0.01
- 入力テキスト:$0.000005/トークン
- 入力画像:$0.00001/トークン(数千トークン≒数セント程度)
3. まとめ
- 参考画像を使った新規生成は未サポート
- 公式にできるのは編集(Edits API)
- ファイルは必ず自分で保存・管理すること
- シード値の指定は不可 → 再現性は限定的
referenced_image_ids が使えない件
元々の記事ではファイルをアップロードし、 referenced_image_ids を使って参考画像とする方法を記載していましたが、実際に2025年9月に実験したところうまく動きませんでした。
下記のように
"Unknown parameter: 'referenced_image_ids'."
と言われてしまいます。
OpenAIのライブラリ の openai.images.generate() のオプションにも referenced_image_ids は存在せず、過去にユーザーコミュニティにより検証されていた内容で現在は動かないもののようでした。残念です。
参考: https://www.reddit.com/r/OpenAI/comments/1bnfa6z/use_reference_image_ids_with_slightly_different/
その方法についてChatGPTで調べさせてみました。
準備
まず API キーを環境変数にセットします。
export OPENAI_API_KEY="sk-..." # あなたのAPIキー
① 既に OpenAI で生成した画像を参照にする場合
1. 画像をダウンロード & アップロード
生成済みの画像URLを保存 → APIにアップロードします。
# ダウンロード
curl -L "https://example.com/your_openai_image.png" -o ref.png
# 参照用アップロード
curl -sS -X POST "https://api.openai.com/v1/files" -H "Authorization: Bearer $OPENAI_API_KEY" -F "file=@ref.png" -F "purpose=vision"
レスポンス例:
{
"id": "file_abc123",
"object": "file",
"purpose": "vision"
}
id が後で使う参照画像IDです。
2. キャラに合わせて生成
curl -sS "https://api.openai.com/v1/images/generations" -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{
"model": "gpt-image-1",
"prompt": "参照キャラの髪型・服装を保ちつつ、春の公園でベンチに座る全身像。イラスト調.",
"size": "1024x1024",
"referenced_image_ids": ["file_abc123"]
}'
3. 部分だけ変えたい場合(Edits API)
背景だけ差し替えたい場合などは images/edits を利用します。
透明部分が編集領域の マスク画像 を用意してください。
curl -sS -X POST "https://api.openai.com/v1/images/edits" -H "Authorization: Bearer $OPENAI_API_KEY" -F "model=gpt-image-1" -F "image=@ref.png" -F "mask=@mask.png" -F 'prompt=キャラクターは保持し、背景を夜景の街並みに差し替える。'
② 手元の画像を参照にする場合
1. アップロード
curl -sS -X POST "https://api.openai.com/v1/files" -H "Authorization: Bearer $OPENAI_API_KEY" -F "file=@my_ref_image.png" -F "purpose=vision"
2. 参照して生成
curl -sS "https://api.openai.com/v1/images/generations" -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{
"model": "gpt-image-1",
"prompt": "参照画像のキャラデザインを踏襲し、夏祭りの夜に浴衣で屋台の前に立つ半身像。",
"size": "1024x1024",
"referenced_image_ids": ["file_xyz789"]
}'
出力画像の保存
レスポンス JSON 内の data[0].url に生成画像URLが含まれます。
curl -L "https://returned-image-url" -o output.png
運用のコツ
- 参照の強さ: プロンプトに「髪型・配色は維持」「顔の比率を保つ」など具体的に書くと安定します。
- 画角の指定: 全身/半身/バストアップなど明記する。
-
差し替え vs 新規生成:
-
細部変更 →
images/edits+ マスク -
構図から作り直すが同じキャラ風 →
images/generations+referenced_image_ids
-
細部変更 →
まとめ
- OpenAI の
gpt-image-1は 外部URLを直接参照できない - 必ず ファイルアップロード → file_id取得 →
referenced_image_idsで指定 - Edits API を使えば一部分だけを置き換えることも可能
この流れを押さえれば、既存キャラのテイストを保ったままシーンや背景を変える、といった表現が簡単に実現できます。
