使用参考图像进行Gemini图像生成
Gemini不仅可以根据提示生成图像,还可以根据您提供的图像生成图像。这就是如何保持一个角色在系列图片中保持一致,或者将真实的产品截图渲染到生成的场景中,而不是一个虚构的场景。
各模型限制
取自2026年9月19日的Gemini API图像生成文档。模型名称和限制会变化;请在使用前重新阅读当前页面。
参考图像总数最多14张,每个类别有独立的子限制,而非共享池:
| 模型 | 对象 | 角色 | 风格 |
|---|---|---|---|
gemini-3.1-flash-image | 10 | 4 | 3 |
gemini-3-pro-image | 6 | 5 | - |
gemini-3.1-flash-lite-image | 14 | - | - |
因此,产品截图和角色肖像不会争抢预算。一张图像可以包含多个屏幕和多人。
类别是推断出来的,而非声明的。 通过AI SDK和网关,您发送的是未区分的file部分;没有字段说明“这是一个角色”。将14视为真正的上限,并远低于此。类别限制描述了模型的能力,而非您可以断言的内容。实际上,两个屏幕加两个人就足够了。
调用
通过Vercel AI Gateway,图像模型的行为类似于语言模型:它通过文本API在files中返回图片,而专用的图像API会拒绝它。请检查您自己的提供者路由如何暴露它。
const result = await generateText({
model,
prompt: [{ role: 'user', content: [
...references.map((r) => ({ type: 'file', mediaType: r.mediaType, data: r.bytes })),
{ type: 'text', text: prompt }, // 图像在前,然后是指令
]}],
providerOptions: { google: {
responseModalities: ['IMAGE'],
imageConfig: { aspectRatio: '4:5', imageSize: '2K' },
}},
});
const file = result.files.find((f) => f.mediaType.startsWith('image/'));
纵横比:1:1 3:2 2:3 3:4 4:3 4:5 5:4 9:16 16:9 21:9。尺寸:512px 1K 2K 4K。
陷阱
1. 附加参考图像时,不要写“无水印”。 Gemini似乎将其理解为从提供的图像中移除水印的请求,并拒绝整个调用。2026年9月测量,每个提示尾运行两次,附加两张参考图像:
| 提示尾 | 结果 |
|---|---|
| "永远不要插图,3D渲染..." | 图像, 图像 |
| "人物、面孔、手...都欢迎。" | 图像, 图像 |
| "没有其他公司的标志。" | 图像, 图像 |
| "无水印。" | 内容过滤, 内容过滤 |
只有水印措辞触发了拒绝。从其他图像工具复制来的负提示约定(许多以watermark, over-saturated, stock-image结尾)可能会静默地破坏每次调用。
2. 拒绝看起来像模型不稳定。 它返回finishReason: 'content-filter',零个文件和空字符串。如果您的错误信息打印result.text,您什么都看不到,并得出API不可靠的结论。始终记录finishReason。
3. 在抛出异常前重试空响应。 模型偶尔会因为普通原因返回空结果。仅在重试次数用完后抛出异常,并将finishReason包含在错误中。
4. 不要描述提供给屏幕的内容。 截图已经存在;关于其内容的文字会与图片冲突,产生混合结果。只描述承载场景的部分:桌子、光线、手。
5. 模型会重绘,而非粘贴。 参考屏幕上的小文本可能会微妙地出现错乱,出现看似合理但错误的名称和标签。这在缩略图大小下没问题,但对于读者会放大的内容则不行。检查输出,而不是假设保真度。
6. 参考图像不会使输出变得不那么合成。 从真实截图和真实肖像构建的图像仍然是AI生成的。请应用适用于您使用生成图像的标签或披露规则;检查适用的内容,而不是假设参考图会免除。
参考图像管道清单
- 参考部分位于文本部分之前。
- 少于14张参考图像;理想情况下4张或更少。
- 提示描述场景,而非提供屏幕的内容。
- 提示中没有水印措辞。
- 记录
finishReason并对空结果进行重试。 - 发布前检查输出中是否有乱码的小文本。