既存のキャンペーン用ポートレートは、人物も服装も合っているのに、背景だけ違うことがあります。その被写体を屋外へ移す作業は、漠然と似た別のキャラクターを生成し直すより具体的です。参照画像は人物の同一性と物の細部を担い、プロンプトは変更後のシーンを担います。
既存の被写体を新しい場所に置きたいときは、Nano Banana 2の編集を使います。まず被写体の画像を1枚用意し、新しい背景を言葉で説明し、特定の場所が重要な場合にだけ2枚目の参照画像を追加します。 このタスクは最大14枚の参照画像を受け付けますが、マスクも同一性の強度スライダーもありません。1kでの編集料金は、既定のルートなら$0.0384で、入力元の画像は1〜10枚まで同じ価格です。公式ルートに切り替わった場合は$0.0536に、入力元の画像ごとの少額の料金が加算されます。自分で用意した参照画像を使う編集では、外部情報が本当に必要でない限り、2つの検索スイッチはどちらもオフにしてください。
Nano Banana 2はフィルタリングされています。SFWのプロモーション用ポートレートや、服を着たキャラクターのシーンに向いています。アダルト画像が目的の場合は、このタスクを選ぶ前にNano Banana 2のコンテンツに関する結果を確認してください。
必要最小限の参照画像から始める
Nano Banana 2の編集ページでPlaygroundタブを開きます。Imagesに被写体の画像を追加し、下のプロンプトをPromptに貼り付け、Aspect ratioはAutoのまま、Resolutionを1kにし、Web searchとEnable Image Searchはオフのままにして、Run modelを押します。確定する前に表示された料金を確認してください。架空のレインウェア広告を例にすると、入力元1の画像には、短い黒髪のボブの32歳の大人の女性が写っています。サフラン色のレインコート、チャコール色のパンツ、クリーム色のスニーカーを身に着け、濃い緑の自転車の横に立っています。全身がはっきり写った画像なら、コート、足元、車輪が編集後も保たれているかを判断できます。
まずはロケーション画像なしで、これを試します。
Keep the fictional adult woman and bicycle from image one: the same facial structure, short dark bob, saffron matte raincoat, charcoal trousers, cream trainers and dark-green bicycle. Replace only the studio setting with a flat riverside path in light morning mist. Preserve the pose and camera view. Match the soft cool daylight and ground contact to the new setting. No other people, bicycles or text.
結果を承認する前に、トリミングと構図を確認します。
川辺は言葉で説明できます。風景の追加画像が役立つのは、その具体的な配置が重要な場合だけです。
参照画像による編集では、再利用できるキャラクターモデルは学習されません。正面・側面・全身の参照ビューを作る場合は、再利用する前に、承認済みの人物と一つずつ照合してください。生成された側面ビューには、元の写真に一度も写っていなかった特徴が混ざることがあります。新しいシーンごとに、必要なビューをあらためて渡してください。
ロケーション画像を足し、素材の参照画像は必要なときだけ追加する
最初のシーンが一般的すぎる場合は、川辺の写真を入力元2として追加します。路面が平らで、立っている被写体に合うカメラ角度のものを選びます。次を加えます。
Image two defines the path, river and mist only. Keep the person, outfit, bicycle and their relative placement from image one. Do not import people, signs or vehicles from image two.
コートの表面が解決していない問題なら、入力元3としてマットなサフラン色の生地のアップ写真を使えます。次を加えます。
Image three supplies only the coat's matte surface texture. Keep the coat's original color, hood, fastening and silhouette from image one.
参照画像の役割は、はっきり分けておきます。
- 画像1: 人物、服、自転車、およびそれらの相対的な配置。
- 画像2: ロケーションとその遠近感。競合する人物や乗り物は含めない。
- 画像3: 素材の表面。コートのデザインは置き換えない。
順番は、実際のアップロード順と一致させる必要があります。テキストで2番目を川と呼んでいるのに、2番目にカラーパレットのサンプルを入れてはいけません。このタスクには画像ごとの重みがないので、普通の文章で役割をはっきり割り当ててください。
もう1着の完全なコートが写った素材写真は、意図せず別の襟や留め具を示唆することがあります。構造がすでに入力元1で決まっているなら、必要な表面だけにトリミングしてください。逆に、新しいコートのデザインにしたい場合は、そう明記します。それは保持ではなく、衣装の入れ替えです。
場所を移すことは、光と遠近の問題でもある
スタジオのポートレートと川辺の写真は、顔が見分けられる状態でも食い違うことがあります。スタジオでは左から照明が当たり、屋外の参照では太陽が右にある、といった具合です。古い影をすべて残すと、被写体が新しい場所に貼り付けたように見えます。顔の構造とコートのデザインは保ちつつ、新しい場所に合った地面の影とやわらかい環境光は許容してください。
水平線と視点が入力元に合うロケーション画像を選びます。目の高さの立ち姿のポートレートは、真上から見た風景より、目の高さの小道のほうが自然に合います。ブリーフで新しい低いカメラアングルを求めると、モデルは顔、服、自転車の見えていない部分を創作しなければなりません。これは背景の置き換えより広い再構築なので、新しい視点を求める前に、まず単純な場所の移動を承認してください。
自転車のシーンでは、車輪が大人の靴と同じ地面の平面に接している必要があります。急な斜面の土手があるロケーション入力元だと、車輪が川に入ったり、丸い形が歪んだりすることがあります。平らで見通せる小道を選び、入力元にある人物と自転車の相対的な位置関係を保ってください。顔は正しいのに車輪が間違っている場合は、顔の参照を増やすのではなく、環境か車輪の形状を直します。
14枠使えるからといって、天候、川、空、コート、自転車、ポートレートのために別々の画像を用意する必要はありません。役割が明確な参照2枚で、この作業は説明できます。3枚目が役立つのは、既存の画像とプロンプトではまだ決まらないことを補うときだけです。
この編集で重要な設定
| 設定 | 実用的な選び方 |
|---|---|
| 参照画像 | 1枚必須、最大14枚。被写体から始め、必要な役割を足す |
| 形状 | 入力元の形状ならauto。計画したポートレートカードなら4:5。入力元の形状が異なる場合は、autoではなく自分で比率を選ぶ |
| 解像度 | まず1k。承認した構図でさらに大きな納品物が必要なら2kか4k |
| Web search | この架空のシーンではオフ |
| Image search | 必要な参照画像をすでに渡しているならオフ |
| マスク/シード/同一性の重み | このタスクでは提供されません |
| 出力形式 | 選択肢なし。現在のモデルページの仕様ではJPEGでの編集とされています |
4:5のカードと16:9のバナーは別の構図です。4:5で人物全体と両方の車輪が必要なら、その旨をプロンプトに書き、余白が十分にある入力元を使います。縦長の比率を選ぶだけでは、端にあるすべての物が保たれるわけではありません。カード上のテキストについては、Nano Banana Proのテキストレイアウトガイドを参照してください。
Googleの紹介では、Nano Banana 2をGemini 3.1 Flash Imageとしており、参照画像を軸にした画像作業について説明しています。
編集にかかる料金
検索スイッチを両方ともオフにした場合の、編集画像1枚あたりのUSD価格です。
| サイズ区分 | 既定のルート | 公式ルートに切り替わった場合 |
|---|---|---|
| 0.5k | — | $0.036 |
| 1k | $0.0384 | $0.0536 |
| 2k | $0.0602 | $0.0808 |
| 4k | $0.0902 | $0.1208 |
アスペクト比はこれらの行に影響しません。既定のルートは1〜10枚の入力元画像を同じ価格で受け付けます。公式ルートでは渡した画像1枚あたり$0.0001032が加算され、0.5k、11枚以上の入力元、検索は公式ルートだけが対応します。Official fallbackをオン(既定)にしている場合、リクエストは公式価格で確保され、既定のルートで生成が完了すると差額が返金されます。
したがって、1〜3枚の入力元なら1kで$0.0384、公式ルートに切り替わった場合でも最大で約$0.054です。ラフな構図確認は0.5k区分($0.036)から始め、服や顔の細部が必要になったらサイズを上げてください。検索を有効にすると料金が加算されます。
短いテキスト応答として返された拒否は、完了した生成として課金されます。それ以外の拒否は課金されません。返ってきた成果物が画像であることを確認してください。
承認済みの設定をAPIで使う
環境にSPICY_API_KEYを設定します。SUBJECT_IMAGE_URL、LOCATION_IMAGE_URL、FABRIC_IMAGE_URLには、承認済み画像の直接HTTPS URLを設定します。Python 3で実行し、表示された見積もりは、新しく有料の試行をしたいときにだけ確定してください。
import json
import os
import uuid
from pathlib import Path
from urllib.request import Request, urlopen
payload = {"model": 'google/nano-banana-2/edit', "input": {
'prompt': 'Image one defines the adult woman, outfit and bicycle. Image two defines only the riverside setting. Image three supplies only the coat texture. Preserve the person, pose, outfit construction and bicycle from image one; match the new daylight and ground shadow.',
'image_urls': [os.environ['SUBJECT_IMAGE_URL'], os.environ['LOCATION_IMAGE_URL'], os.environ['FABRIC_IMAGE_URL']],
'resolution': '1k',
'aspect_ratio': '4:5',
'enable_web_search': False,
'enable_image_search': False,
}}
def api(action, body, key=None):
headers = {"Authorization": "Bearer " + os.environ["SPICY_API_KEY"],
"Content-Type": "application/json"}
if key:
headers["Idempotency-Key"] = key
request = Request("https://api.spicyapi.ai/api/v1/jobs/" + action,
data=json.dumps(body).encode(), headers=headers)
with urlopen(request, timeout=60) as response:
result = json.load(response)
if result.get("code") != 200:
raise RuntimeError(result)
return result["data"]
quote = api("quote", payload)
print("Maximum charge (USD):", quote["maxCharge"])
if input("Create this new attempt? Type yes: ").strip() != "yes":
raise SystemExit("No task created")
key = str(uuid.uuid4())
body = {**payload, "quoteId": quote["quoteId"],
"expectedCost": quote["estimatedCost"]}
Path(key + ".json").write_text(json.dumps({"key": key, "request": body}))
task = api("createTask", body, key)
Path(key + ".task.json").write_text(json.dumps(task))
print("Task ID:", task["taskId"])同じリクエストを再試行するために、保存されたキーを残しておいてください。ローカルファイルは先にアップロードし、返されたspicy://アドレスを渡します(メディアを参照)。結果の取得とファイルの扱いは、タスクAPIガイドにあります。
編集を繰り返す場合は、承認済みのブリーフをAgentに任せられます。
- CLI:
npx @spicyapi/cli tasks create --model google/nano-banana-2/edit --input-file input.json --waitは、inputオブジェクトをinput.jsonから同じフィールドで読み込みます。 - MCP:
spicyapi_task_createのあとにspicyapi_task_waitを使うよう依頼します。 - Skill:
npx skills add spicyapi-ai/spicy-skillでインストールし、spicyapiSkillに見積もりを表示させたうえで、この設定を実行するよう依頼します。
ブリーフ全体を書き直さずにドリフトを診断する
背景は変わったが、顔も変わってしまった。
- 元の被写体画像に戻し、ロケーションの入力元から他の顔を取り除きます。
- 既存のカメラビューを保ちます。劇的に新しい角度は、見えていない特徴をエディターに創作させることになります。
- 顔のピクセルを正確に保ちたい場合は、承認済みの前景を新しい場所に合成します。このタスクには、ピクセルを固定するマスクがありません。
コートが光沢を帯びた、または構造が変わった。
- 表面のエラー: やわらかい光の下でのマットな生地を指定するか、素材のトリミング画像を渡します。
- デザインのエラー: 承認済みの留め具とシルエットが写っている元の入力元を使います。テクスチャを変えても、別のコートは直りません。
自転車に余分なチューブが加わった、または車輪が消えた。 フレームと車輪が隠れていない入力元を使います。自転車まわりの霧を減らし、既存の視点を保ち、入力元2にある競合する自転車を取り除きます。生地の参照を足しても、形状の問題は解決しません。
人物が小道に貼り付けたように見える。 顔と服のデザインを守りつつ、地面の影と環境光は変わってよいことにします。霧のかかった屋外シーンで元のスタジオの影を求めると、自分でずれを作ってしまうことがあります。
2回目の編集が1回目より悪い。 失敗結果を次のリクエストに入れず、承認済みの入力元からやり直します。成功した候補は、その候補が持つ特徴のためだけに使い、必要でなければ使いません。あとの画像が自動的に優れた同一性の参照になるわけではありません。
Nano Banana 2が不向きな操作
正確なマスク修復、透過の切り抜き、編集可能なレイヤーファイル、アダルトコンテンツが必要な場合は、別の操作を選んでください。参照画像を増やしても検索スイッチを使っても、これらの足りない制御は加わりません。レインウェアのシーンなら、Nano Banana 2は実用的な編集の選択肢です。一方、縫い目をすべて正確に保つ必要がある衣料カタログでは、従来の前景合成のほうが直接的な解決策になることがあります。
よくある質問
キャラクターの一貫性のために、参照画像14枠すべてが必要ですか?
いいえ。必要な顔、服装、物が写っている被写体のビューから始めます。ロケーションや素材は、足りない情報を補う場合にだけ追加します。14は入力の上限であり、一貫性のスコアでも、矛盾するビューをアップロードする理由でもありません。
autoは元の寸法を保ちますか?
モデルの仕様では、autoは入力元の形状を保つとされています。解像度は別に選択します。autoは元のピクセル寸法も端の内容の正確さも保証しません。計画した4:5のカードなら、その比率を選び、人物全体と自転車に十分な余白がある入力元を使ってください。
シードや同一性スライダーで顔のドリフトを止められますか?
このホスト型の編集タスクは、どちらも提供していません。シーンごとに同じ承認済みの同一性の参照を使い、ロケーション画像から他人の顔が入り込まないようにします。顔のピクセルをまったく変えたくない場合は、保持を強める形容詞ではなく、従来の合成が必要です。
拒否にはお金がかかりますか?
完了した短いテキストの拒否は課金されます。それ以外の拒否は課金されません。そのため、タスクのステータスが成功でも、それだけでは画像を受け取ったことを確認できません。
最初の有効な試行は、被写体1つ、場所の移動1つ、控えめな出力1つです。参照画像は、目に見える不足している要件に答えるために追加するもので、空いている枠を埋めるためではありません。






