GPT Image 2 对比 Nano Banana Pro:价格、功能和代码
OpenAI 的 GPT Image 2 和 Google 的 Nano Banana Pro 是广告创意、产品图编辑和带文字图片这类场景中最常被拿来比较的两个图像模型。下面介绍它们在价格、尺寸和输入上的差异,以及如何用同一个请求测试两者。
简短结论
当图片需要承载清晰可读的文字、遵循冗长的指令,或者编辑真实的产品照片时,GPT Image 2(OpenAI)和 Nano Banana Pro(Google)是大多数团队列入候选名单的两个图像模型。两者都能根据提示词生成图片并编辑你发送的图片,都最高支持 4K,在 Revana 上都使用相同的请求体。它们的区别在于:
- 价格。GPT Image 2 在每种尺寸下都标价每张 $0.03。Nano Banana Pro 在每种尺寸下都标价每张 $0.04。
- 参考图。GPT Image 2 一次请求最多支持 16 张;Nano Banana Pro 最多 14 张。
- 画幅。GPT Image 2 提供 5:2 全景;Nano Banana Pro 提供 5:4 和 4:5,这是常见的信息流和印刷画幅。
- 线路。GPT Image 2 背后有两条线路;Nano Banana Pro 有一条线路。
我们不发布画质评分。每个模型都有各自拥趸,这是有原因的,而唯一重要的测试是你自己的提示词。除了 model 字段之外请求完全相同,所以把同样的十条提示词在两者上各跑一遍,只需几行代码。
功能对比
| GPT Image 2 | Nano Banana Pro | |
|---|---|---|
| 开发商 | OpenAI | |
| 模型 id | gpt-image-2 | nano-banana-pro |
| 任务 | 文生图、图像编辑 | 文生图、图像编辑 |
| 尺寸 | 1K, 2K, 4K | 1K, 2K, 4K |
| 宽高比 | 1:1, 3:4, 4:3, 2:3, 3:2, 9:16, 16:9, 21:9, 5:2 | 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9 |
| 参考图 | 最多 16 张 | 最多 14 张 |
| 每张图片价格 | 每种尺寸 $0.03 | 每种尺寸 $0.04 |
| 线路 | 两条线路 | 一条线路 |
一批任务的费用(2026 年 10 月)
两个模型都按每张图片收一次费,且在 1K、2K 和 4K 下的价格相同,所以你选的尺寸不会改变账单。因此,只要你之后可能裁剪或印刷,4K 就是合理的默认选择。
| 图片数量 | GPT Image 2 | Nano Banana Pro |
|---|---|---|
| 1 | $0.03 | $0.08 |
| 100 | $3.00 | $8.00 |
| 1,000 | $30.00 | $80.00 |
| 10,000 | $300.00 | $800.00 |
如果每张图片的价格比什么都重要,两家厂商在目录中都有更便宜的同系列模型:OpenAI 的 GPT Image 2.5 Flare 和 GPT Image 2.5 Sunburst 在 1K 和 2K 下标价 $0.02,Google 的 Nano Banana 2 在 1K 和 2K 下标价 $0.03。Nano Banana Pro 对比 Nano Banana 2 指南详细介绍了 Google 这一侧。
哪个任务用哪个
以下是根据人们使用这两个模型的方式给出的起点,而不是基准测试结果:
| 任务 | 先试 | 再对比 |
|---|---|---|
| 图片中带标题的广告创意 | GPT Image 2 | Nano Banana Pro |
| 必须保持产品原样的产品照片编辑 | Nano Banana Pro | GPT Image 2 |
| 组合多个参考素材(角色、产品、场景) | GPT Image 2(16 张输入) | Nano Banana Pro(14 张输入) |
| 全景页头 | GPT Image 2(5:2) | Nano Banana Pro(21:9) |
| 信息流和印刷画幅(4:5、5:4) | Nano Banana Pro | GPT Image 2(3:4、4:3) |
一个有用的习惯是把提示词和参考素材保存在你自己的代码里,把模型当作一项设置。当某个模型在特定提示词上表现不佳时,把同样的请求体发给另一个模型,而不是花一个小时去重写提示词。
用同一个提示词在两者上运行
这个示例向 GPT Image 2 提交一条提示词。把 model 改成 nano-banana-pro 就可以在 Google 的模型上运行;其他都不用改。每张 4K 图片在 GPT Image 2 上费用为 $0.03,在 Nano Banana Pro 上为 $0.08。
export REVANA_API_KEY="sr_live_..."
# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"input": {
"prompt": "A minimalist poster for a jazz night. Large serif title BLUE HOUR, the line FRIDAY 9 PM below it, a single trumpet in silhouette against a deep blue gradient.",
"resolution": "4K",
"aspect_ratio": "2:3"
},
"max_cost_usd": 0.1
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JC2V8K5T \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": "gpt-image-2",
"input": {
"prompt": "A minimalist poster for a jazz night. Large serif title BLUE HOUR, the line FRIDAY 9 PM below it, a single trumpet in silhouette against a deep blue gradient.",
"resolution": "4K",
"aspect_ratio": "2:3",
},
"max_cost_usd": 0.1,
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
const res = await fetch(`${API}/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "gpt-image-2",
input: {
prompt: "A minimalist poster for a jazz night. Large serif title BLUE HOUR, the line FRIDAY 9 PM below it, a single trumpet in silhouette against a deep blue gradient.",
resolution: "4K",
aspect_ratio: "2:3",
},
max_cost_usd: 0.1,
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);在一个脚本里对比两个模型
同时提交两个任务并一起轮询,是并排评判两者最快的方式。没有月度配额,所以像这样的对比运行只受你的余额限制。
import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
PROMPT = "A paper coffee cup on a cafe table. The sleeve reads KEEP GOING in hand-lettered type."
jobs = {}
for model in ("gpt-image-2", "nano-banana-pro"):
r = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": model,
"input": {"prompt": PROMPT, "resolution": "2K", "aspect_ratio": "1:1"},
"max_cost_usd": 0.1,
})
r.raise_for_status()
jobs[model] = r.json()["id"]
for model, gen_id in jobs.items():
while True:
job = requests.get(f"{API}/generations/{gen_id}", headers=HEADERS).json()
if job["status"] in ("succeeded", "failed"):
break
time.sleep(3)
print(model, job["status"], job.get("output"), job.get("cost_usd"))两个模型都会拒绝某些提示词,例如真人肖像或受商标保护的角色。拒绝会以失败任务的形式返回,带有 error.code content_policy 和一个 reason,且不收费。
在模型页面浏览两个模型,在文档中阅读请求参考,在价格页面比较额度包,或者获取 API 密钥。
常见问题
GPT Image 2 比 Nano Banana Pro 更好吗?
谁也无法在所有任务上取胜。GPT Image 2 支持更多参考图(16 张)和 5:2 全景;Nano Banana Pro 以准确的文字和忠实的编辑著称,并提供 4:5 和 5:4。请用你自己的提示词跑一遍两者;在 Revana 上,只需要改 model 字段。
GPT Image 2 和 Nano Banana Pro 哪个更便宜?
2026 年 10 月,GPT Image 2 每张 $0.03,Nano Banana Pro 每张 $0.04,两者在 1K、2K 和 4K 下的价格都相同。
我可以用一个 API 密钥同时使用两者吗?
可以。两者在同一个目录中,使用相同的请求体。把 model 字段从 gpt-image-2 改为 nano-banana-pro 即可切换。
两个模型都支持 4K 吗?
支持。两者都列出了 1K、2K 和 4K,且在每种尺寸下的价格都相同。
我可以发送多少张参考图?
GPT Image 2 最多 16 张,Nano Banana Pro 最多 14 张,通过 image_urls 字段传入。