メインコンテンツへスキップ

Nano Banana Proのseed固定はできる?同じ画像と絵柄を再利用する方法

同じ画像をもう一度使うなら元ファイルを保存し、別の場面でも人物や絵柄を揃えるなら採用済みの1枚を参照にします。Nano Banana Proのseedは利用する入口の仕様を確認する必要があり、固定値だけで画素の完全一致を約束することはできません。

LaoZhang AI Team公開20 分で読めます
目次
完成画像の保存と、参照画像から別の場面を作る方法を描いた説明イラスト

Nano Banana Proでまったく同じ画像を使いたいなら、採用した元ファイルを保存して再利用するのが確実です。seedを同じ値にして生成し直す方法と、保存済みの画像をもう一度表示する方法は、結果の保証が違います。一方、人物や絵柄を保ちながら別の場面を作りたい場合は、採用済みの1枚を参照画像にし、「保つもの」と「変えるもの」を分けて指定すると作業を進めやすくなります。

seedの有無は、利用する画面・APIごとに確認します。GoogleのGenerateContentの汎用設定には整数のseedがあります。ただし、同じページはすべてのパラメータをすべてのモデルで設定できるわけではないと説明しています。この一覧だけで、Nano Banana Proの個々の入口がseedを受け付けることや、画像が画素単位で一致することまでは確認できません。

「同じ画像」が必要なのか、「同じ人物・絵柄」が必要なのか

最初に、どこまで揃えば採用できるかを決めます。たとえばイベント告知のキャラクターなら、前回の完成画像をそのまま別ページに載せる作業と、同じキャラクターを新しいポーズで描く作業は分けて考えます。

欲しい結果最初に選ぶ方法採用時に確かめること
前回の完成画像をそのまま使う元ファイルを保存してコピーするファイルのハッシュ、必要な解像度
同じ画像を別サイズや別形式で納品する保存済み画像に決まった画像処理を施すトリミング範囲、色、書き出し設定
同じ人物や絵柄で別の場面を作る基準画像を参照し、変更点を指定する顔、衣装、線、配色など用途に必要な特徴
同じ設定で生成をやり直して比較するseedを記載した利用先の仕様とモデル対応を確認する実際の応答、生成物、モデルと設定の記録
生成過程まで自分で制御したい固定した実行環境で動かせる生成処理を選ぶモデル、処理系、乱数、演算条件の固定範囲

ファイルの一致、画素の一致、見た目の一致も別です。PNGを別の圧縮設定で保存すると、見た目や画素が同じでもファイルのバイト列は変わり得ます。JPEGで再保存すると画素にも差が出ます。納品物をそのまま再利用したいなら元ファイルを保持し、人物の一貫性を評価したいなら顔や衣装などの採用条件で比較します。

seed欄があっても、まず利用先の仕様を確認する

「Nano Banana Proにはseedがない」と一括りにするのも、「seedがあるので完全再現できる」とするのも適切ではありません。モデル名が同じでも、GoogleのAPIと他社のAPIではリクエスト形式や公開されている仕様が異なります。

利用先文書で確認できることそれだけでは確認できないこと
Google GenerateContent汎用generationConfigに整数のseedがある。モデルごとに設定可能な項目は異なるProのすべての入口での受付、同じ画素の生成
GoogleのVertex/Agent Platformの一般設定同じseedによる同じ応答はベストエフォートで、決定的な出力は保証されないPro画像での具体的な一致率
IdeogramのNano Banana Pro用API自社APIのseedを0〜2,147,483,647の範囲で記載Google内部での処理経路、画素の完全一致
RunwareのNano Banana Pro用API自社モデル資料に同範囲の整数seedを記載Googleの直接APIと同じ挙動になること

出典:Google GenerationConfig、Googleのseedの条件、IdeogramのPro用API、RunwareのPro用モデル資料。2026年10月7日時点の文書の比較です。他社APIの記載は、その利用先の仕様として扱います。

設定する前に、次の順で確認してください。

  1. 利用先と正確なモデルIDを記録します。現在のGoogleのPro画像モデルはgemini-3-pro-imageです。
  2. その入口の文書で、seedのフィールド名、置く場所、許容値、対象モデルを確認します。ImageConfigにseedが載っていないことは、上位の汎用設定にも存在しないという意味ではありません。
  3. 通常の制作で得た応答を保存します。エラーなら、エラーの項目と設定値を照合します。正常応答でも、seedが生成結果にどう作用したかを証明したことにはなりません。
  4. 比較が必要なら、プロンプト、参照ファイル、モデル、画像サイズ、その他の設定を揃えます。seedを変えた比較とモデルを変えた比較を同時に行うと、差の原因を切り分けられません。

Googleの一般的なseedの説明は、同じ値での同じ応答をベストエフォートとしています。temperatureを下げることやプロンプトを固定することも、画像の完全一致の保証に置き換わりません。利用中の画面にseedの操作が見当たらない場合は、その画面の公開仕様を確認し、次の参照画像の方法で制作を進めます。

基準になる1枚を保存して、保つものと変えるものを指定する

新しい場面でも人物や絵柄を揃えたいなら、まず基準画像を1枚選びます。今回は、告知画像に登場する「紺色のジャケットを着た短髪の案内役」を例にします。別のポーズが欲しいたびに、元のプロンプトだけから作り直すのではなく、承認済みの画像を参照として渡します。

  1. 基準画像を決める。 顔、髪型、衣装、線の描き方を確認し、採用したファイルを原本として保管します。生成した候補と原本は別のフォルダーにします。
  2. 保持する特徴を文章にする。 「同じキャラクター」だけでなく、髪の長さ、ジャケットの色、顔の輪郭、線や陰影の特徴を指定します。
  3. 今回の変更を絞る。 ポーズ、背景、画角をすべて変える必要がなければ、目的に必要な変更から始めます。修正時も、直したい箇所を具体的に伝えます。
  4. 候補を基準画像と並べて選ぶ。 顔、髪、衣装、絵柄、今回の変更が揃っているかを比較します。採用した出力だけを次の工程へ渡します。
  5. 似なくなったら参照を見直す。 編集を重ねた画像で意図しない変化が増えた場合は、承認済みの基準画像に戻し、必要な変更を改めて指示します。

案内役の髪・顔・衣装・絵柄を保ち、手のポーズと背景を変える指示の説明図

そのまま使える指示例です。画像を添付してから、特徴を自分の基準画像に合わせて書き換えてください。

添付画像の案内役を、イベント会場で右手を軽く上げて
来場者を迎えている場面にしてください。

保つもの:短い黒髪、丸みのある顔の輪郭、紺色のジャケット、
白いインナー、細い輪郭線、淡い陰影、落ち着いた配色。

変えるもの:右手のポーズと背景。背景は明るい会場入口。
元画像にない小物や文字は追加しないでください。
人物の上半身が収まる横長の構図にしてください。

Googleの画像生成ガイドは、Proで合計14枚までの参照画像を扱う方法を掲載し、物体の参照は最大6枚、人物は最大5枚、スタイルは最大3枚と区分しています。これは参照画像の扱いに関する仕様で、出力の人数や完全な一致を保証する数字ではありません。今回のように1人を揃えたい作業なら、まず必要な参照から始め、追加する画像が何を伝えるのかを明確にします。

Zennで公開された絵柄を揃える制作記録にも、参照画像と変更指示を使った試行が載っています。ただし、対象はGemini 2.5 Flash Imageで、個人の観察です。Nano Banana Proの一致率や、必ず何回で完成するかの根拠にはしません。

基準画像とリクエストをローカルで一緒に保存する

再現を比較できるようにするには、seedだけでなく、参照画像と実際に送る文章も保存します。次のPythonプログラムは、画像原本のコピー、SHA-256、プロンプト、Google GenerateContent形式のリクエストJSONを一つのフォルダーにまとめます。APIには送信せず、画像も生成しません。 Python 3の標準ライブラリだけで実行できます。

prepare_job.pyとして保存してください。PNGかJPEGの基準画像と、UTF-8のprompt.txtが必要です。出力先は新しいフォルダー名を指定します。

python
import argparse
import base64
import hashlib
import json
from pathlib import Path


def prepare(image_path, prompt_path, output_path, seed=None):
    data = Path(image_path).read_bytes()
    if data.startswith(b"\x89PNG\r\n\x1a\n"):
        mime, suffix = "image/png", ".png"
    elif data.startswith(b"\xff\xd8\xff"):
        mime, suffix = "image/jpeg", ".jpg"
    else:
        raise ValueError("PNGまたはJPEGを指定してください")

    prompt = Path(prompt_path).read_text(encoding="utf-8").strip()
    if not prompt:
        raise ValueError("プロンプトが空です")
    if seed is not None and not 0 <= seed <= 2147483647:
        raise ValueError("この例のseedは0〜2147483647です")

    config = {
        "responseModalities": ["TEXT", "IMAGE"],
        "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"},
    }
    if seed is not None:
        config["seed"] = seed
    request = {
        "contents": [{
            "role": "user",
            "parts": [
                {"text": prompt},
                {"inlineData": {
                    "mimeType": mime,
                    "data": base64.b64encode(data).decode("ascii"),
                }},
            ],
        }],
        "generationConfig": config,
    }
    record = {
        "model": "gemini-3-pro-image",
        "interface": "Google GenerateContent",
        "referenceFile": "reference" + suffix,
        "referenceSha256": hashlib.sha256(data).hexdigest(),
        "requestFile": "request.json",
        "seed": seed,
        "status": "prepared-not-sent",
    }
    out = Path(output_path)
    out.mkdir(parents=True, exist_ok=False)
    (out / record["referenceFile"]).write_bytes(data)
    (out / "prompt.txt").write_text(prompt, encoding="utf-8")
    for name, value in [("request.json", request), ("job.json", record)]:
        (out / name).write_text(
            json.dumps(value, ensure_ascii=False, indent=2),
            encoding="utf-8",
        )
    print(out / "request.json")


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("image")
    parser.add_argument("prompt")
    parser.add_argument("output")
    parser.add_argument("--seed", type=int)
    args = parser.parse_args()
    prepare(args.image, args.prompt, args.output, args.seed)

実行例です。最初はseedを付けずにリクエストを準備します。

bash
python3 prepare_job.py reference.png prompt.txt jobs/welcome-01

seedを使う場合は、利用先がそのモデルとパラメータに対応することを別途確認してから、--seed 42を追加します。この例の0〜2,147,483,647という制限はコード側で選んだ範囲で、Googleのすべてのモデルの許容範囲を示すものではありません。

request.jsonは、GenerateContentのContent/Part/GenerationConfigに沿った送信前のデータです。モデルIDはリクエスト本文ではなく、利用する呼び出し先に合わせて指定します。このJSONを他社APIやInteractions APIへそのまま渡すことはできません。通常使っているAPI連携から送信する際は、その入口の認証、モデル対応、リクエスト仕様を適用してください。

プログラムは新規フォルダーだけに書き込みます。成功するとreference.pngまたはreference.jpg、prompt.txt、request.json、job.jsonが揃い、画像コピーのハッシュをjob.jsonと照合できます。画像形式の先頭バイトの確認は完全な画像デコード検査ではないので、基準画像は事前に開いて確認してください。

基準画像と文章から、画像原本・prompt・リクエストJSON・設定記録をローカルに保存する流れ

このコードでは、架空の小さな画像を使い、JSONの読み戻し、参照バイト列の保存、seedの配置と省略、空の文章・範囲外seed・出力先の重複をローカルで確認しています。Googleへの送信、Proでのseed受付、一致率、課金は検証していません。

候補を選んだら、再生成と仕上げを分ける

生成した候補から採用画像を選んだ後は、元ファイルと納品用ファイルを別に保存します。顔や衣装がよい候補なのに、余白やサイズだけを直したい場合は、再生成する前に通常の画像編集で対応できるかを判断します。

固定の切り抜き、縮小、文字入れ、形式変換を行うなら、入力原本、切り抜き位置、出力サイズ、補間方法、色設定、形式と品質設定を記録します。同じ原本と同じ処理条件から作るほうが、毎回モデルに同じ完成画像を描き直してもらうより管理しやすくなります。画像処理ソフトやバージョンを変えたときは、納品結果を改めて確認します。

候補を増やす場合は、採用1枚に必要な費用も見ます。GoogleのPro Standardでは、1K/2K画像の出力部分は1枚約0.134米ドル、4Kは0.24米ドルです。たとえば2Kの出力4枚から1枚を選ぶ仮定なら、画像出力部分だけで4 × 1,120 ÷ 1,000,000 × 120 = 0.5376米ドルになります。入力とテキスト・思考出力は別料金で、これは請求実績でも成功率でもありません。ProのAPIには無料枠がありません。GoogleのPro料金表

モデル選びも見直したい場合は、Nano Banana 2.1の料金とモデルの違いで別の選択肢を確認できます。モデルを変えれば、同じseedを指定しても前のモデルと同じ画像になるとは限りません。

生成の再現性そのものが要件なら、制御できる範囲を選ぶ

比較実験などで生成過程を繰り返す必要があるなら、seedを公開している利用先で、そのモデル・設定・結果を記録できるかを確認します。IdeogramやRunwareのPro用資料は候補を調べる入口になりますが、必要な一致の水準に対して、公開仕様の説明だけで十分かを判断してください。画素の完全一致が必須なら、再生成に頼らず完成ファイルを保存する方法を優先します。

自分で実行する生成処理を選ぶ場合は、モデルの重み、ソフトウェア、ハードウェア、乱数を使う処理、演算の決定性まで固定範囲を広げます。PyTorchの再現性に関する説明も、同じseedであってもリリースやプラットフォームをまたぐ完全な再現を保証していません。これは自分で制御する処理の条件を考えるための資料で、Nano Banana Proの内部実装を説明するものではありません。

古い記事にあるGoogle Imagenへの切り替え手順を、現行の代替策として使わないでください。GoogleのImagenはGemini APIで2026年8月17日に終了し、Vertex AIのImagen 4モデルも2026年6月30日に提供終了と記載されています。サービスごとに日付が異なり、昔のseedの説明が残っていても現在呼び出せる根拠にはなりません。Gemini APIの提供終了情報、Vertex AI Imagen 4のモデル情報

よくある質問

同じseedとプロンプトなら、同じ画像になりますか?

完全一致を前提にはできません。Googleの一般的なseedの仕様は同じ応答をベストエフォートとし、決定的な出力を保証していません。Proでの具体的な受付は利用先のモデル対応も確認します。前回採用した画像そのものが必要なら、保存した元ファイルを使ってください。Googleのseedの条件

seedが表示されない画面でも、同じキャラクターを使えますか?

参照画像を入力できるなら、採用済みの画像を添付し、保持したい顔・髪・衣装・絵柄と今回の変更を分けて指定できます。ただし、人物の完全一致を保証する方法ではないので、用途に必要な特徴を候補ごとに確認してください。Proの参照画像の扱いはGoogleの画像生成ガイドで確認できます。

他社APIが返したseedをGoogleのAPIで使い回せますか?

同じ結果を再現できると考えないでください。IdeogramやRunwareにseedの記載があることは、その利用先の仕様です。別のAPIへ移るときは入力形式とモデル対応を確認し、採用画像の原本とプロンプトも一緒に引き継ぎます。Ideogram、Runware

古いコードのgemini-3-pro-image-previewはそのまま使えますか?

そのプレビュー版は2026年6月25日に提供終了しています。Googleが示す移行先はgemini-3-pro-imageです。モデルIDを更新したうえで、使うAPIの現行形式を確認してください。Googleの提供終了情報

参考資料11

本文で参照している外部ページを、登場順に並べています。最終更新日:2026年10月7日。

  1. 1.GenerateContentの汎用設定ai.google.dev/api/generate-content
  2. 2.Googleのseedの条件docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/content-generation-parameters
  3. 3.IdeogramのPro用APIdeveloper.ideogram.ai/api-reference/images/generate/nano-banana-pro
  4. 4.RunwareのPro用モデル資料runware.ai/docs/models/google-nano-banana-pro
  5. 5.gemini-3-pro-imageai.google.dev/gemini-api/docs/models/gemini-3-pro-image
  6. 6.画像生成ガイドai.google.dev/gemini-api/docs/image-generation
  7. 7.Zennで公開された絵柄を揃える制作記録zenn.dev/yusu31/articles/d36fcc3b666a3d
  8. 8.GoogleのPro料金表ai.google.dev/gemini-api/docs/pricing
  9. 9.PyTorchの再現性に関する説明docs.pytorch.org/docs/2.14/notes/randomness.html
  10. 10.Gemini APIの提供終了情報ai.google.dev/gemini-api/docs/deprecations
  11. 11.Vertex AI Imagen 4のモデル情報docs.cloud.google.com/vertex-ai/generative-ai/docs/models/imagen/4-0-generate
さらに読む: AI 画像生成