Google AI Gemini 图像生成
Gemini 可以使用名为 Nano Banana(Gemini 2.5 Flash Image)和 Nano Banana Pro(Gemini 3 Pro Image Preview)的专用图像模型,以对话方式生成和编辑图像。
目录
概述
Gemini 的原生图像生成能力允许你:
- 文本到图像:根据文本描述生成高质量图像
- 图像编辑:在现有图像中添加、移除或修改元素
- 风格迁移:将艺术风格应用到图像上
- 迭代优化:通过多轮对话迭代优化图像
- 高保真文本渲染:生成带有清晰、位置合理文字的图像
所有生成的图像都包含 SynthID 水印。
可用模型
| 模型 | 说明 | 最大分辨率 | 最大输入图像数 |
|---|---|---|---|
gemini-2.5-flash-image | 快速、高效的图像生成(Nano Banana) | 1024px | 3 |
gemini-3-pro-image-preview | 高级功能、思考模式、Google Search grounding(Nano Banana Pro) | 4K | 14 |
GoogleAiGeminiImageModel
基本用法
ImageModel imageModel = GoogleAiGeminiImageModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-2.5-flash-image")
.build();
Response<Image> response = imageModel.generate(
"A nano banana dish in a fancy restaurant with a Gemini theme"
);
// Save the generated image
Image image = response.content();
byte[] imageBytes = Base64.getDecoder().decode(image.base64Data());
Files.write(Paths.get("nano-banana.png"), imageBytes);
配置
ImageModel imageModel = GoogleAiGeminiImageModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-3-pro-image-preview")
.aspectRatio("16:9") // Output aspect ratio
.imageSize("2K") // Resolution (Gemini 3 Pro only)
.timeout(Duration.ofSeconds(120))
.maxRetries(3)
.logRequestsAndResponses(true)
.safetySettings(...) // Content safety settings
.build();
图像生成
文本到图像
根据描述性文本提示词生成图像:
ImageModel imageModel = GoogleAiGeminiImageModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-2.5-flash-image")
.build();
// Photorealistic style
Response<Image> photo = imageModel.generate("""
A photorealistic close-up portrait of an elderly Japanese ceramicist
with deep wrinkles and a warm smile, inspecting a tea bowl.
Soft golden hour light, 85mm portrait lens, shallow depth of field.
""");
// Stylized illustration
Response<Image> sticker = imageModel.generate("""
A kawaii-style sticker of a happy red panda wearing a bamboo hat,
munching on a leaf. Bold outlines, cel-shading, vibrant colors,
white background.
""");
// Logo design
Response<Image> logo = imageModel.generate("""
A modern, minimalist logo for 'The Daily Grind' coffee shop.
Clean, bold sans-serif font. Black and white. Circular design
with a clever coffee bean element.
""");
宽高比
两个模型都支持的宽高比:
| 宽高比 | 用例 |
|---|---|
1:1 | 正方形,社交媒体帖子 |
2:3、3:2 | 竖拍/横拍照片 |
3:4、4:3 | 标准照片 |
4:5、5:4 | Instagram 帖子 |
9:16、16:9 | Stories、YouTube 缩略图 |
21:9 | 电影宽屏、超宽 |
ImageModel imageModel = GoogleAiGeminiImageModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-2.5-flash-image")
.aspectRatio("16:9") // Widescreen format
.build();
图像尺寸
Gemini 3 Pro Image Preview 支持更高分辨率:
| 尺寸 | 说明 |
|---|---|
1K | 默认分辨率 |
2K | 更高分辨率 |
4K | 最大分辨率 |
ImageModel imageModel = GoogleAiGeminiImageModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-3-pro-image-preview")
.aspectRatio("1:1")
.imageSize("4K") // High resolution output
.build();
图像编辑
添加与移除元素
通过将现有图像与文本提示词一起提供来编辑图像:
ImageModel imageModel = GoogleAiGeminiImageModel.builder()
.apiKey(System.getenv("GOOGLE_AI_GEMINI_API_KEY"))
.modelName("gemini-2.5-flash-image")
.build();
// Load the source image
Image sourceImage = Image.builder()
.base64Data(Base64.getEncoder().encodeToString(
Files.readAllBytes(Paths.get("cat.png"))))
.mimeType("image/png")
.build();
Response<Image> edited = imageModel.edit(
sourceImage,
"Add a small wizard hat on the cat's head. " +
"Make it look natural with matching lighting."
);
风格迁移
将图像转换为不同的艺术风格:
Image cityPhoto = // ... load your image
Response<Image> stylized = imageModel.edit(
cityPhoto,
"Transform this city street into Vincent van Gogh's 'Starry Night' style. " +
"Preserve the composition but render with swirling brushstrokes " +
"and a dramatic palette of deep blues and bright yellows."
);