4K 多画幅批量出图:用 Nano Banana 2 API 搭建一套适配电商/短视频/官网的素材管线
做过内容运营的人都清楚,同一张图要出好几个版本:公众号封面要 2.35:1,抖音封面要 9:16,淘宝主图要 1:1,官网 Banner 要 16:9。以前的做法是设计师出一张大图,再裁切成各种尺寸。每次改需求都要返工。
Nano Banana 2(Gemini 3.1 Flash Image)原生支持 10 种画幅比例和从 512px 到 4K 的分辨率选择。这意味着可以用同一个 Prompt 直接生成不同尺寸的图,而不是靠后期裁切。
这篇文章记录的是我用 Nano Banana 2 API 搭建一套批量出图管线的过程,包括遇到的构图漂移问题和对应的解决办法。
支持的规格矩阵
先列一下 Nano Banana 2 目前支持的全部画幅和分辨率:
画幅比例(10 种): 1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 / 4:5 / 5:4 / 21:9
分辨率档位:
- 512:约 512×512,速度最快,成本最低(约 $0.045/张)
- 1K:约 1024×1024,默认档位(约 $0.067/张)
- 2K:约 2048×2048(约 $0.101/张)
- 4K:约 4096×4096,适合印刷和大屏展示(约 $0.151/张)
实际像素数会根据画幅比例自动调整。比如 16:9 + 4K 大约是 4096×2304。
批量生成脚本
用 Python + Gemini API 写一个批量生成不同画幅的脚本:
import google.generativeai as genai
import os, time
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-3.1-flash-image-preview')
prompt = "一杯精致的拿铁,拉花是天鹅形状,暖色调咖啡馆环境,专业摄影"
specs = [
{"name": "taobao_main", "ratio": "1:1", "size": "2K"},
{"name": "douyin_cover", "ratio": "9:16", "size": "2K"},
{"name": "wechat_banner", "ratio": "16:9", "size": "2K"},
{"name": "website_hero", "ratio": "21:9", "size": "4K"},
{"name": "xiaohongshu", "ratio": "4:5", "size": "2K"},
]
output_dir = "./output"
os.makedirs(output_dir, exist_ok=True)
for spec in specs:
try:
response = model.generate_content(
contents=[prompt],
generation_config={
"response_mime_type": "image/jpeg",
"aspect_ratio": spec["ratio"],
}
)
if response.parts:
img_data = response.parts[0].inline_data.data
filepath = f"{output_dir}/{spec['name']}_{spec['ratio'].replace(':', 'x')}.jpg"
with open(filepath, 'wb') as f:
f.write(img_data)
print(f"[OK] {spec['name']} - {spec['ratio']}")
time.sleep(1)
except Exception as e:
print(f"[FAIL] {spec['name']}: {e}")
一次 Prompt 生成 5 种规格,总成本不到 $0.5,耗时约 50 秒。
构图漂移问题
同一个 Prompt、不同画幅,生成出来的构图不一样。这是正常的,但有时候差异大到影响使用。
实际观察到的问题:
- 1:1 的图里咖啡杯居中,拉花清晰可见
- 9:16 的图里咖啡杯跑到了画面底部三分之一处,上面多了一大片天花板
- 21:9 的图里咖啡杯缩得很小,两边填充了很多桌面
模型为了适配不同画幅,会自动调整构图和视角。大多数时候处理得还行,但偶尔会把主体挤到边角。
解决方法:
-
画幅感知的 Prompt:在 Prompt 里加上构图描述。比如 9:16 加上"竖版构图,咖啡杯居中偏下,上方留出文字空间",21:9 加上"横幅构图,咖啡杯位于画面左侧三分之一处"。
-
分两步走:先用 1:1 生成一张"基准图",锁定主体形象。再把这张图作为参考图,配合不同画幅重新生成。模型会尽量保持参考图里的主体特征。
-
后期裁切兜底:对于要求不高的场景,也可以统一生成最大画幅(比如 16:9 的 4K),然后脚本化裁切。但会损失构图质量。
文件命名和入库
批量出图后的素材管理也要考虑。建议的命名规则:
{日期}_{项目名}_{用途}_{画幅}_{分辨率}.{格式}
20260228_latte_taobao_1x1_2K.jpg
20260228_latte_douyin_9x16_2K.jpg
20260228_latte_banner_16x9_2K.jpg
如果素材量大,可以直接上传到对象存储(比如 OSS),用目录结构区分项目和用途:
/assets/2026-02/latte-campaign/
├── 1x1/
├── 9x16/
├── 16x9/
└── 21x9/
成本估算
按照每天一个项目、每个项目 5 种画幅、每种画幅生成 3 张(挑最好的 1 张)计算:
- 每天:5 × 3 = 15 张
- 使用 2K 分辨率:15 × $0.101 ≈ $1.5/天
- 每月:约 $45
和设计师外包的价格相比,几乎可以忽略。而且 AI 不用沟通需求,不用等排期。
CLI 工具替代方案
如果不想写 Python 脚本,GitHub 上有一个开源的 CLI 工具 nano-banana-2-skill,可以直接在终端里用:
nano-banana "精致拿铁,天鹅拉花" -a 1:1 -s 2K -o taobao_main
nano-banana "精致拿铁,天鹅拉花" -a 9:16 -s 2K -o douyin_cover
nano-banana "精致拿铁,天鹅拉花" -a 16:9 -s 4K -o website_hero
它还自带成本追踪功能,nano-banana --costs 可以查看历史花费。
参考链接