AB
AiBoss
チュートリアル

Nano Banana

チュートリアル

用 Nano Banana 完成多图融合与人物一致性修图

Nano Banana(Gemini 2.5 Flash Image)擅长多图融合、保持人物一致性和自然语言局部改图。本教程梳理 AI Studio、Gemini 应用与 API 三条上手路径,给出可直接套用的提示词结构与五个场景示例,并说明免费额度、水印、抽卡等实际限制。

Nano Banana 是 Google DeepMind 推出的图像生成与编辑模型,正式名称为 Gemini 2.5 Flash Image,基于 Gemini 2.5 Flash 架构。它解决的问题很具体:当你需要在一张已有照片上做修改,而不是从零生成一张新图时,它可以用自然语言指令完成局部替换、背景重绘、服装更换、多图元素合并,并且在多次编辑之间尽量保持人物面部与身份的一致性。适合的人群包括做社交媒体素材的创作者、需要出商品图的电商运营、做室内方案可视化的设计师,以及想把图像能力接进自己程序的开发者。如果你只是想快速试一下效果,可以直接打开站内的 Nano Banana 工具页开始。

需要先说明一点:这个模型并不是每次都能一次出片。素材里明确提到存在「抽卡」的概率,也就是同样的提示词多次运行结果质量会有波动。理解这一点之后,下面的流程会更顺:先拿到一个可用的底图,再用小步迭代的方式逐步逼近想要的效果,而不是指望一条长提示词一次到位。

准备工作

在动手之前,先确认你打算走哪条路径。Nano Banana 目前有几类访问方式,各自的前置条件不同。

路径一:Google AI Studio(最适合快速试验)

  • 需要一个 Google 账号,并能正常登录 Google AI Studio。
  • 不需要安装任何软件,全部在浏览器里完成。
  • 免费使用,但素材指出免费版输出会带水印。

路径二:Gemini 应用(适合在手机上随手改图)

  • 同样需要 Google 账号。
  • 在应用内进入图像编辑模式即可使用。
  • 素材提到付费的 Gemini Advanced 订阅可以不受次数限制地使用,具体权益与价格请以官网当前信息为准。

路径三:API(适合开发者批量调用)

  • 需要一个 API 密钥,在 Google AI 的开发者平台获取。
  • 本地需要 Python 环境,并安装 Google 的生成式 AI SDK 与 Pillow(用于读写图片)。
  • 调用时使用的模型标识为 gemini-2.5-flash-image-preview。模型名称与可用性可能随版本调整,接入前请以官网当前信息为准。

路径四:第三方平台

素材还提到一些第三方站点与聚合平台也接入了该模型,例如 Freepik、Bylo.ai、Imogen 一类产品。这类平台的功能、额度与收费规则各不相同,且变动频繁,使用前请自行核对官网当前信息。本文的示例以 AI Studio 与 API 为主,因为这两条路径的行为最可预期。

操作步骤

第一步:在 AI Studio 中进入图像编辑

登录 AI Studio 后,在首页选择新建提示(New prompt)或开始对话(Start chatting),然后在模型选择处切换到 Nano Banana 对应的图像模型。切换完成后,输入框就可以同时接收文字指令和上传的图片。

这一步的关键是确认你选中的是图像编辑模型,而不是纯文本对话模型。如果上传图片后模型只回复文字、不返回图片,通常就是模型没切对。

第二步:上传底图并写第一条指令

把要修改的照片上传,然后用一句自然语言描述你想要的改动。第一条指令建议只做一件事,例如「把背景换成纯白」或「把外套换成深蓝色」。一次只改一个变量,出问题时你才知道是哪句话导致的。

素材中的示例是上传一张自拍照,提示「把我放到太空,穿宇航服」,得到结果后再追加一轮「添加地球背景」。这种两步走的做法比一次性写「把我放到太空穿宇航服并且背景有地球和星云」更容易控制,因为第二步是在已经满意的结果上做增量修改。

第三步:用迭代指令逐步修正

拿到第一版结果后,不要重新开一个对话,而是在同一轮上下文里继续追加要求。常见的追加方向有:

  • 调整背景:Change the background to a soft grey studio backdrop.
  • 调整光线:Keep lighting natural, avoid harsh shadows.
  • 锁定人物:Keep my face realistic and consistent.
  • 补充元素:Add a small plant on the left side of the desk.

如果某一轮结果变差,直接回到上一版继续,而不是在变差的结果上继续叠加指令。上下文越长,模型越容易偏离最初的目标。

第四步:用 API 调用(开发者路径)

先安装依赖:

pip install google-genai pillow

然后是最小可运行脚本。注意把 YOUR_API_KEY 换成你自己的密钥,不要把它硬编码进要提交到版本库的文件里:

from google import genai
from PIL import Image
from io import BytesIO

client = genai.Client(api_key="YOUR_API_KEY")

prompt = "Create a nano banana dish in a fancy restaurant"

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[prompt],
)

image = Image.open(
    BytesIO(response.candidates[0].content.parts[0].inline_data.data)
)
image.save("output.png")

这段代码的结构值得记住,因为后面所有变体都建立在它之上:

  • client.models.generate_content 是统一入口,模型名决定行为。
  • contents 是一个列表,可以放纯文本,也可以放图片对象,顺序会影响模型对指令的理解。
  • 返回结果在 response.candidates[0].content.parts[0].inline_data.data 里,是二进制图像数据,需要用 BytesIO 包一层再交给 Pillow 解析。
  • 如果返回的 parts 里没有 inline_data,说明这一轮没有产出图片,通常是提示词被判定为纯文本请求,或者触发了安全策略。

第五步:在 API 中传入参考图

要做「保持人物一致性」这类任务,必须把原图一起传进去。做法是把图片读成 Pillow 对象,和文字提示一起放进 contents 列表:

from google import genai
from PIL import Image
from io import BytesIO

client = genai.Client(api_key="YOUR_API_KEY")

source = Image.open("portrait.jpg")

prompt = (
    "Using the person in this photo, place them in a space suit "
    "standing on a lunar surface. Keep the face realistic and "
    "consistent with the original photo."
)

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[prompt, source],
)

result = Image.open(
    BytesIO(response.candidates[0].content.parts[0].inline_data.data)
)
result.save("astronaut.png")

多图融合时同理,把多张图片依次放进 contents,并在提示词里明确说明每张图分别承担什么角色,例如「第一张图是人物,第二张图是背景,第三张图是包」。素材中的电商示例就是这种思路:人物、粉色宝马、绿色外星人钥匙扣、粉色手袋、鹦鹉、戴粉色项圈和金色耳机的巴哥犬,全部在一段提示词里描述清楚各自的位置与关系。

一个完整示例

下面走一遍从零到出图的完整流程,任务是把一张普通室内照片改造成指定配色的方案效果图。这个场景对设计师最实用,也最能体现「用嘴改图」的价值。

准备素材

  • 一张空房间照片(empty_room.jpg)。
  • 一份配色参考(可以是色卡图片,也可以直接用文字描述颜色)。

第一轮:结构改造

提示词:

empty room photo. Paint walls blue, add bookshelf, coffee table, and sofa from this color palette. Keep lighting natural.

这段提示词有三个要点值得拆开看。第一,开头用 empty room photo 明确输入类型,避免模型把空房间理解成要重新生成一个房间。第二,Paint walls blue 是明确的动作加对象加结果,比「让房间更好看」有效得多。第三,Keep lighting natural 是约束条件,用来防止模型把光打得过于戏剧化、失去真实感。

第二轮:局部微调

如果第一轮的书架位置不合适,追加:

Move the bookshelf to the right wall, keep the sofa and coffee table unchanged.

这里显式写出「保持不变」的部分很重要。模型在编辑时倾向于重新理解整张图,明确锁定不需要改动的元素能显著降低漂移。

第三轮:输出与保存

在 AI Studio 里直接下载结果图即可。走 API 的话,把每一轮返回的 inline_data 分别存成文件,保留中间版本,方便对比挑选:

for i, part in enumerate(response.candidates[0].content.parts):
    if part.inline_data is not None:
        img = Image.open(BytesIO(part.inline_data.data))
        img.save(f"room_v{i}.png")

这样一轮下来,你会得到若干张候选图。素材提到模型存在随机性,多跑几次再挑,比反复修改一条提示词更省时间。

其他四个可直接套用的场景

时尚与自拍编辑。提示词示例:

Change my outfit to a medieval Indian princess saree with flowers in hair, deep center parting. Keep my face realistic and consistent.

要点是服装描述要具体到发型、分缝、配饰,最后一句锁定面部一致性。

产品摄影与电商。把模特、商品、道具、背景分别描述清楚,并说明它们之间的空间关系(靠在什么上、谁在谁肩上、谁坐在旁边)。素材示例中把绿色外星人钥匙扣挂在粉色手袋上、鹦鹉站在肩上、巴哥犬坐在旁边,这种逐项定位的写法比笼统说「一个时尚场景」稳定得多。

教育与图表生成。素材给出的示例是绘制公鸡的 3D 立体剖面设计图,要求拆解零部件、有序排列、配中文标注说明结构名称与功能。这类任务对文字渲染的要求较高,标注文字可能出现错字或错位,需要多轮修正。素材作者也提到,用这个模型直接产出可用于教学的三维模型并不现实,教学场景目前更适合做示意图而非精确模型。

游戏与头像设计。提示词示例:

Generate avatar from this photo: Make me a space explorer with helmet, add alien pet on shoulder. Multiple angles for consistency.

「多个角度」这个要求是为了检查一致性是否真的成立。如果不同角度下人物特征发生明显变化,说明参考图的信息没有被充分利用,可以尝试减少同时修改的元素数量。

注意事项

  • 免费版有水印。素材明确指出免费使用输出会带水印,需要无水印结果要考虑付费方案。具体权益与价格以官网当前信息为准。
  • 结果存在随机性。同一提示词多次运行质量会有波动,这是使用体验的一部分,不是操作错误。重要素材建议多跑几轮再挑。
  • 模型名可能变化。示例中的 gemini-2.5-flash-image-preview 带 preview 后缀,说明处于预览阶段,正式名称、可用区域与配额都可能调整,接入生产前请核对官网当前信息。
  • 返回结构要判空。不是每次调用都会返回图片,取 parts[0].inline_data 之前应先判断该字段是否存在,否则会抛异常。
  • 密钥不要外泄。API 密钥应通过环境变量注入,不要写进代码仓库。
  • 一次只改一件事。把多个改动塞进一条提示词,出问题时无法定位原因,也不利于保留可回退的中间版本。
  • 文字标注类任务需要复核。涉及图中文字(尤其是中文标注)时,输出可能存在错字或排版错位,必须人工检查后再使用。
  • 第三方平台规则各异。聚合站与镜像站的额度、收费、稳定性不受模型方控制,使用前请自行确认其当前条款。