站点图标 高效码农:前沿AI、IT技术与开发者分享

Gemini 2.5 Flash Image实战指南:3步打造爆款AI图像应用

如何用 Nano Banana 构建应用:开发者完全指南

Google 近期发布了 Gemini 2.5 Flash Image,这是一个强大的图像生成和编辑模型,其内部代号为 Nano Banana。该模型引入了先进的图像创建和操控能力,为开发者开辟了广泛的新应用场景。

本指南旨在为希望通过 Gemini Developer API 将 Gemini 2.5 Flash Image(即 Nano Banana)集成到其应用程序中的开发者提供全面的指导。无论你是希望为产品添加创意图像生成功能,还是需要自动化图像编辑流程,本教程都将带你一步步实现。

本文欲回答的核心问题

开发者如何利用 Gemini 2.5 Flash Image (Nano Banana) 这一强大的多模态模型,通过 API 在其应用程序中实现图像生成、编辑、修复等高级功能?


1. 在 Google AI Studio 中使用 Nano Banana

本段欲回答的核心问题:开发者从哪里可以零成本地开始体验和原型化 Nano Banana 模型?

虽然最终用户可以在 Gemini 应用中访问 Nano Banana,但对于开发者来说,在编写代码之前进行提示词(Prompt)实验和测试的最佳环境是 Google AI Studio。这是一个用于试验所有可用 AI 模型的“游乐场”,同时也是构建 Gemini API 应用的入口。

你可以在 AI Studio 中免费使用 Nano Banana。要开始使用,请访问 aistudio.google.com,使用你的 Google 账户登录,然后从模型选择器中选择 Nano Banana

你也可以直接通过以下链接开启一个使用该模型的新会话:
ai.studio/banana

Google AI Studio 界面截图,显示已选择 Nano Banana 模型

提示:你还可以在 ai.studio/apps 上直接在 AI Studio 中“低代码”构建 Nano Banana Web 应用,或者探索和重新混合一个现有的应用

反思:AI Studio 提供了一个无风险的沙盒环境,这极大地降低了开发者的入门门槛。在投入编码之前,先在这里进行构思和测试,是避免后期返工的关键一步。


2. 项目设置

本段欲回答的核心问题:开始通过 API 使用 Nano Banana 需要完成哪些必要的准备工作?

要跟随本指南,你需要准备以下几项:

步骤 A:生成 API 密钥

请遵循以下步骤:

  1. 在 Google AI Studio 中,点击左侧导航栏中的 Get API key
  2. 在接下来的页面上,点击 Create API key
  3. 选择一个现有的 Google Cloud 项目或创建一个新项目。此项目用于管理 API 使用的计费。

过程完成后,你的 API 密钥将会显示。请复制并将其安全地存储。

步骤 B:启用账单

虽然在 AI Studio 中进行原型设计是免费的,但通过 API 使用模型是一项付费服务。你必须在你的 Google Cloud 项目上启用账单。

在 API 密钥管理界面,点击你的项目旁边的 Set up billing 并按照屏幕上的指示操作。

Google AI Studio 界面中显示账单设置提示的图片

Nano Banana 的成本是多少?

使用 Nano Banana 生成图像的成本为 每张图像 $0.039 *。1 美元大约可以生成 25 张图像。

* 官方定价为输入 token 30/100 万个。一张标准的 1024x1024px 输出图像消耗 1290 个 token,相当于每张图像 $0.039。详情请参阅 Gemini 2.5 Flash Image 定价表

步骤 C:安装 SDK

为你选择的编程语言安装 SDK。

Python:

pip install -U google-genai
# 安装 Pillow 库用于图像处理
pip install Pillow

JavaScript / TypeScript:

npm install @google/genai

以下示例将使用 Python SDK 进行演示。在 JavaScript 中使用 Nano Banana 的等效代码片段提供在此 GitHub Gist 中。

反思:清晰的准备工作是项目成功的基础。特别是启用账单这一步,明确成本结构有助于在项目初期就做好预算规划,避免意外支出。


3. 从文本生成图像

本段欲回答的核心问题:如何通过简单的文本描述,让 Nano Banana 模型生成全新的图像?

使用 Nano Banana 可以从描述性文本提示(Prompt)生成一张或多张图像。所有 API 请求均使用模型 ID gemini-2.5-flash-image-preview

应用场景:此功能非常适合为博客文章生成特色图片、为 UI 原型创建占位图、为游戏设计角色概念图,或是为营销活动快速生产视觉素材。

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

# 使用你的 API 密钥配置客户端
client = genai.Client(api_key="YOUR_API_KEY")

prompt = """创建一张照片般真实的图像,内容是一只橙色的猫,
长着绿色的眼睛,坐在沙发上。"""

# 调用 API 生成内容
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=prompt,
)

# 响应可能同时包含文本和图像数据。
# 遍历 parts 以查找并保存图像。
for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("cat.png")

输出:

一张照片般真实的橙色绿眼猫坐在沙发上的图像

该模型是多模态的,因此响应被结构化为一个 parts 列表,这些部分可以包含交错排列的文本和图像数据(inline_data)。上面的代码遍历这些部分以提取并保存生成的图像。


4. 使用文本和图像输入进行图像编辑

本段欲回答的核心问题:如何基于一张现有图片和文本指令,让模型对其进行精确的编辑和再创作?

提供一张现有图像和一个文本提示,可以执行编辑操作。该模型非常擅长保持输入图像中的角色和内容一致性。

应用场景:这在许多场景下非常实用,例如:为产品图片更换背景、为社交媒体上的照片添加趣味元素(比如给宠物戴上一顶帽子)、或者将设计草图转换为更精美的渲染图。

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

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

prompt = """使用这只猫的图像,创建一张照片般真实的街景视图,
描绘这只猫在纽约市街区的便道上行走,背景中有模糊的行人腿部和
黄色出租车经过。"""

image = Image.open("cat.png")

# 在 'contents' 列表中同时传递文本提示和图像
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[prompt, image],
)

for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("cat2.png")

输入和输出:

并排比较图,显示原始的猫图像和编辑后的在纽约市行走的猫图像

反思:模型维持主体一致性的能力令人印象深刻。这不仅仅是简单的图像叠加,而是根据提示语义对原始主体在新环境中的合理呈现,为连贯的图像叙事打开了大门。


5. 使用 Nano Banana 进行照片修复

本段欲回答的核心问题:Nano Banana 能否帮助修复和美化老旧或损坏的照片?

该模型的一个强大应用是照片修复。通过一个简单的提示,它可以用令人印象深刻的效果修复并为老照片上色。

应用场景:修复家族老照片、处理部分损坏的扫描文档、或者为黑白历史资料添加色彩以增强其表现力,都是其典型应用。

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

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

prompt = "修复并为这张 1932 年的图像上色"

image = Image.open("lunch.jpg")  # "Lunch atop a Skyscraper, 1932"(摩天大楼顶上的午餐)

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

for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("lunch-restored.png")

原始图和输出:

并排比较图,显示原始的黑白图像和修复上色后的图像

6. 处理多个输入图像

本段欲回答的核心问题:能否结合多张图片的信息来完成更复杂的任务?

你可以提供多张图像作为输入,以执行更复杂的编辑任务。

应用场景:虚拟试衣(将一件衣服应用到一个人物照片上)、将多个元素合成到一个场景中、或者基于一张样式图片和一张内容图片进行风格迁移。

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

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

prompt = "让这个女孩穿上这件 T 恤。保持背景不变。"

image1 = Image.open("girl.png")
image2 = Image.open("tshirt.png")

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

for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("girl-with-tshirt.png")

输入 1 & 2 和输出:

显示女孩输入照片、T恤输入照片以及女孩穿着T恤的最终输出图像的图片

7. 对话式图像编辑

本段欲回答的核心问题:能否像聊天一样,通过多轮对话来逐步细化并编辑一张图像?

为了进行迭代优化,你可以使用 chats 会话来在多个请求之间保持上下文。这允许你以对话方式进行图像编辑。

应用场景:设计工作流中,与客户或团队成员围绕一个图像进行实时协作和修改;或个人用户逐步调整图像直至满意,例如:“把猫变成孟加拉猫” -> “现在给它加一顶派对帽” -> “让背景变成海滩”。

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

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

# 创建一个聊天会话
chat = client.chats.create(
    model="gemini-2.5-flash-image-preview"
)

# 进行第一次图像编辑
response1 = chat.send_message(
    [
        "把猫变成孟加拉猫,其他一切保持不变",
        Image.open("cat.png"),
    ]
)
# 显示 / 保存图像...

# 继续聊天和编辑
response2 = chat.send_message("给猫戴上一顶有趣的派对帽")
# 显示 / 保存图像...

输入和输出 1 & 2:

显示原始猫、第一次编辑将其变为孟加拉猫以及第二次编辑显示孟加拉猫戴着派对帽的图片

提示:如果你注意到在经过多次对话编辑后,图像特征开始退化或“漂移”,最好使用最新的图像和一个更详细、更 consolidated 的提示来开启一个新会话,以保持高保真度。

反思:对话式接口将图像编辑从一次性的指令执行转变为一种交互式的探索过程。这更接近于人类创作者的工作方式,但其效率潜力远超手动操作。需要注意的是,长时间会话中的“漂移”现象提示我们,复杂的修改最好通过精心设计的一次性提示或在关键时刻刷新会话来完成。


8. Nano Banana 的最佳实践和提示技巧

本段欲回答的核心问题:如何编写有效的提示词(Prompt)来从 Nano Banana 获得最佳质量的输出?

为了通过 Nano Banana 获得最佳结果,请遵循以下提示指南:

  • 极度具体:你对主体、颜色、灯光和构图的细节提供得越多,对输出的控制力就越强。
  • 提供上下文和意图:解释图像的用途或所需的情緒。模型对上下文的理解会影响其创意选择。
  • 迭代和细化:不要期望第一次尝试就完美无缺。利用模型的对话能力进行增量更改并优化你的图像。
  • 使用分步说明:对于复杂的场景,将你的提示分解为一系列清晰、顺序的指令。
  • 使用正面表述:与其使用“不要汽车”这样的负面提示,不如正面描述所需场景:“一条空旷、无人居住的街道,没有交通迹象。”
  • 控制镜头:使用摄影和电影术语来指导构图,例如“广角镜头”、“微距拍摄”或“低角度视角”。

反思:编写提示词更像是一门艺术而非科学。它要求开发者清晰地构思最终图像并将其转化为机器可理解的指令。最有效的提示往往是那些在具体性和创造性之间找到平衡点的提示,既提供了明确的约束,又为模型的想象力留下了空间。


9. 社区示例与灵感

本段欲回答的核心问题:其他开发者正在用 Nano Banana 构建哪些有创意的应用?

探索社区正在使用 Nano Banana 构建的项目:

  • @henrydaubrez 转换相机视角: X post
  • @multimodalart 进行少样本学习以实现一致的角色设计: X post
  • @tokumin 进行的“红色箭头看到什么”谷歌地图变换: X post
  • @yachimat_manga 根据简笔画注释生成图像: X post
  • @deedydas 从静态图像创建 3D 模型: X post
  • @bilawalsidhu 生成基于位置的 AR 体验: X post
  • @demishassabis 将 2D 地图转换为 3D 图形: X post

10. 资源与后续步骤

本段欲回答的核心问题:学习完本教程后,开发者可以去哪里找到更多信息和深入学习的资源?

本指南涵盖了使用 Nano Banana(即 Gemini 2.5 Flash Image)进行构建的基础知识。你已经学习了如何设置环境、生成和编辑图像以及应用高级技术。现在,你已准备好开始将这些强大的功能融入到你自己的项目中。

如需进一步阅读,请查看官方资源:


实用摘要 / 操作清单

  1. 起步:访问 ai.studio/banana 在 AI Studio 中免费试用 Nano Banana。
  2. 获取凭证:从 AI Studio 获取 API 密钥并在 Google Cloud 项目中启用计费。
  3. 安装:通过 pip install -U google-genai (Python) 或 npm install @google-genai (JS) 安装 SDK。
  4. 生成图像:使用 model="gemini-2.5-flash-image-preview" 和文本提示调用 client.models.generate_content
  5. 编辑图像:在 contents 参数中同时传入文本提示和图像对象(PIL Image 等)。
  6. 复杂任务:对于多图像输入或对话式编辑,利用多图像输入或 client.chats.create 会话。
  7. 优化提示:保持提示具体、正面,并使用摄影术语来指导模型。
  8. 迭代:不要期望一次成功,使用对话功能进行细化,或在图像质量下降时开启新会话。

一页速览 (One-page Summary)

任务 核心方法 关键参数 说明
文本生成图像 client.models.generate_content() contents=[text_prompt] 根据自然语言描述生成全新图像。
图像编辑 client.models.generate_content() contents=[text_prompt, image_object] 基于原图和文本指令编辑图像。
多图像输入编辑 client.models.generate_content() contents=[text_prompt, img1, img2, ...] 结合多张输入图像的信息完成复杂任务(如虚拟试衣)。
对话式编辑 chat = client.chats.create() + chat.send_message() 每次传入文本和/或图像 在多轮对话中保持上下文,逐步迭代修改图像。
照片修复/上色 client.models.generate_content() contents=[restore_prompt, old_image] 使用“修复并上色”等提示处理老旧或黑白照片。
模型指定 N/A model="gemini-2.5-flash-image-preview" 所有请求均需使用此模型 ID。

常见问题解答 (FAQ)

Q1: 使用 Nano Banana (Gemini 2.5 Flash Image) 需要付费吗?
A: 在 Google AI Studio 中 prototyping 是免费的。通过 API 调用生成图像则需要付费,标准成本约为每张 1024×1024 图像 $0.039。

Q2: 我可以用它来编辑现有的图片吗?
A: 可以,这是它的核心功能之一。只需在 API 调用中同时提供原始图像和描述编辑意图的文本提示。

Q3: 它能保持图像中主体的一致性吗?
A: 是的,该模型非常擅长在编辑任务中保持输入图像中主体的特征一致性,例如改变场景但保留人物或动物的样貌。

Q4: 支持多轮对话式的图像生成和编辑吗?
A: 支持。你可以使用 chats 会话来模拟多轮对话,基于之前的上下文逐步修改图像。

Q5: 除了生成和编辑,还有什么典型应用?
A: 照片修复(修复损伤、上色)、风格转换、基于多张输入图像的合成(如试穿衣服)、甚至是从简笔画或地图生成图像等都是常见的社区应用。

Q6: 生成的图片有版权吗?
A: 根据 Google 的条款,通常使用其 AI 生成服务产生的输出供你所有和使用,但建议在使用前始终查阅最新的官方服务条款以确认。

Q7: 如何处理 API 返回的响应?它可能包含什么?
A: 响应是一个多部分(multipart)结构,可能包含文本(part.text)和图像数据(part.inline_data)。你的代码需要遍历这些部分来分别处理文本和图像。

Q8: 提示词(Prompt)怎么写效果更好?
A: 尽量具体描述主体、细节、颜色、光照、构图和氛围。使用正面指令说明你想要什么,而不是你不想要什么。对于复杂任务,可以尝试分解成步骤写在提示词中。

退出移动版