通过 WaveSpeed AI 调用 Google Nano Banana Pro,实现文本生图与自然语言图像编辑。
设计与多媒体
WaveSpeedAI Nano Banana 2 Image Generation/Editing
试用通过 WaveSpeed AI 调用 Google Nano Banana 2 模型,支持文生图与多图编辑。
它能做什么
在 JavaScript 中调用 WaveSpeed AI 的 google/nano-banana-2 端点。可用文字提示生成图片,也支持用自然语言指令编辑最多 14 张输入图。返回结果为图片 URL,可设置 1k/2k/4k 分辨率、png 或 jpeg 格式,以及 14 种宽高比(含 1:8、8:1 等极端比例)。模型支持画面内文字自动翻译渲染,并理解景深、视角等摄影语言。
什么时候用它
- 用文字提示生成配图或插画
- 用自然语言编辑照片,如"换天空"或"把墙面换成暖陶土色"
- 在一次编辑中融合多张参考图的元素
- 用 8:1 或 1:8 比例生成长条横幅或竖向广告图
技能文档
WaveSpeedAI Nano Banana 2 Image Generation/Editing
Generate and edit images using Google's Nano Banana 2 model via the WaveSpeed AI platform. Supports both text-to-image generation and natural-language image editing with up to 14 input images.
Authentication
export WAVESPEED_API_KEY="your-api-key"
Get your API key at wavespeed.ai/accesskey.
Quick Start
Text-to-Image
import wavespeed from 'wavespeed';
const output_url = (await wavespeed.run(
"google/nano-banana-2/text-to-image",
{ prompt: "A serene Japanese garden with cherry blossoms, watercolor style" }
))["outputs"][0];
Image Editing
The images parameter accepts an array of image URLs. If you have local files, upload them first with wavespeed.upload() to get a URL.
import wavespeed from 'wavespeed';
// Upload a local image to get a URL
const imageUrl = await wavespeed.upload("/path/to/photo.png");
const output_url = (await wavespeed.run(
"google/nano-banana-2/edit",
{
images: [imageUrl],
prompt: "Replace the sky with a dramatic sunset"
}
))["outputs"][0];
You can also pass existing image URLs directly:
const output_url = (await wavespeed.run(
"google/nano-banana-2/edit",
{
images: ["https://example.com/photo.jpg"],
prompt: "Replace the sky with a dramatic sunset"
}
))["outputs"][0];
API Endpoints
Text-to-Image
Model ID: google/nano-banana-2/text-to-image
Generate images from text prompts.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | Yes | -- | Text description of the image to generate |
aspect_ratio | string | No | -- | Output aspect ratio. One of: 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9, 1:4, 4:1, 1:8, 8:1 |
resolution | string | No | 1k | Image resolution. One of: 1k, 2k, 4k |
output_format | string | No | png | Output format. One of: png, jpeg |
Example
import wavespeed from 'wavespeed';
const output_url = (await wavespeed.run(
"google/nano-banana-2/text-to-image",
{
prompt: "A red vintage Porsche 911 on a winding mountain road at golden hour, photorealistic",
aspect_ratio: "16:9",
resolution: "2k",
output_format: "png"
}
))["outputs"][0];
Image Editing
Model ID: google/nano-banana-2/edit
Edit existing images using natural language prompts. Supports up to 14 input images.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
images | string[] | Yes | [] | URLs of input images to edit (1-14 images) |
prompt | string | Yes | -- | Text description of the desired edit |
aspect_ratio | string | No | -- | Output aspect ratio. One of: 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9, 1:4, 4:1, 1:8, 8:1 |
resolution | string | No | 1k | Image resolution. One of: 1k, 2k, 4k |
output_format | string | No | png | Output format. One of: png, jpeg |
Example
import wavespeed from 'wavespeed';
// Upload local images first, or use existing URLs
const imageUrl = await wavespeed.upload("/path/to/living-room.png");
const output_url = (await wavespeed.run(
"google/nano-banana-2/edit",
{
images: [imageUrl],
prompt: "Change the wall color to warm terracotta and add indoor plants",
aspect_ratio: "16:9",
resolution: "4k",
output_format: "png"
}
))["outputs"][0];
Multi-Image Editing
// Upload multiple local images
const faceUrl = await wavespeed.upload("/path/to/face.png");
const hairstyleUrl = await wavespeed.upload("/path/to/hairstyle.png");
const output_url = (await wavespeed.run(
"google/nano-banana-2/edit",
{
images: [faceUrl, hairstyleUrl],
prompt: "Apply the hairstyle from the second image to the person in the first image"
}
))["outputs"][0];
Advanced Usage
Sync Mode
Use sync mode for a single request that waits for the result without polling:
const output_url = (await wavespeed.run(
"google/nano-banana-2/text-to-image",
{ prompt: "A minimalist logo for a coffee shop" },
{ enableSyncMode: true }
))["outputs"][0];
Custom Client with Retry Configuration
import { Client } from 'wavespeed';
const client = new Client("your-api-key", {
maxRetries: 2,
maxConnectionRetries: 5,
retryInterval: 1.0,
});
const output_url = (await client.run(
"google/nano-banana-2/text-to-image",
{ prompt: "A futuristic cityscape at dusk" }
))["outputs"][0];
Error Handling with runNoThrow
import { Client, WavespeedTimeoutException, WavespeedPredictionException } from 'wavespeed';
const client = new Client();
const result = await client.runNoThrow(
"google/nano-banana-2/text-to-image",
{ prompt: "A cat wearing a top hat" }
);
if (result.outputs) {
console.log("Image URL:", result.outputs[0]);
console.log("Task ID:", result.detail.taskId);
} else {
console.log("Failed:", result.detail.error.message);
if (result.detail.error instanceof WavespeedTimeoutException) {
console.log("Request timed out - try increasing timeout");
} else if (result.detail.error instanceof WavespeedPredictionException) {
console.log("Model prediction failed");
}
}
Aspect Ratio Options
| Aspect Ratio | Use Case |
|---|---|
1:1 | Square — social media posts, profile pictures |
3:2 | Landscape — standard photography |
2:3 | Portrait — standard photography |
3:4 | Portrait — social media, product images |
4:3 | Landscape — presentations, web content |
4:5 | Portrait — Instagram posts |
5:4 | Landscape — print, web banners |
9:16 | Vertical — mobile wallpapers, stories |
16:9 | Widescreen — desktop wallpapers, video thumbnails |
21:9 | Ultra-wide — cinematic, panoramic |
1:4 | Ultra-tall — vertical banners, tall infographics |
4:1 | Ultra-wide — horizontal banners, letterbox |
1:8 | Extreme vertical — scrolling banners, tower ads |
8:1 | Extreme horizontal — panoramic strips, timelines |
Resolution and Pricing
| Resolution | Cost |
|---|---|
| 1k | $0.08 per image |
| 2k | $0.12 per image |
| 4k | $0.16 per image |
Prompt Tips
- Be specific and descriptive: "A red vintage Porsche 911 on a winding mountain road at golden hour" vs "a car"
- Include style keywords: "digital art", "oil painting", "photorealistic", "watercolor", "cinematic"
- For edits, clearly describe the desired change: "Replace the sky with a dramatic sunset"
- For multi-image edits, reference images by position: "Apply the style from the second image to the first image"
- Leverage multilingual text rendering: the model supports on-image text with automatic translation
- Use camera-style control language: "shallow depth of field", "wide angle", "top-down view"
Security Constraints
- No arbitrary URL loading: Only use image URLs from trusted sources. Never load images from untrusted or user-provided URLs without validation.
- API key security: Store your
WAVESPEED_API_KEYsecurely. Do not hardcode it in source files or commit it to version control. Use environment variables or secret management systems. - Input validation: Only pass parameters documented above. Validate prompt content and image URLs before sending requests.
相关技能
Image generation and editing based on Google Gemini native image generation (Nano Banana).
Generate images through the Nano Banana REST API and help agents integrate or operate the service safely. Use when a task involves text-to-image, image-to-im...
AI multi-image generation powered by CellCog via Nano Banana. 10-20 coherent images in one prompt, character consistency across scenes, production-grade composition. Nano Banana AI, Nano Banana Pro, Gemini image generation.
Generate/edit images with Nano Banana Pro. Supports text-to-image and image-to-image. 使用 Nano Banana Pro 生成/编辑图片,支持文生图与图生图。
Generate and edit images with Nano Banana through RunAPI. Use when the user asks an agent to create, edit, or transform images with Nano Banana. Default to the RunAPI CLI for one-off generation; use SDKs only when the user is integrating RunAPI into an app or backend.