图像生成
学习如何使用 TurboAPI 生成图像。
TurboAPI 提供统一访问领先的图像生成模型,包括 DALL-E 3、Midjourney 和 Stable Diffusion。
生成图像
import { TurboAPIClient } from '@turboapiai/sdk';
const client = new TurboAPIClient({
apiKey: process.env.TURBOAPI_API_KEY,
});
// 调用图像生成 API
const task = await client.call.createAndWait('api-slug', {
prompt: '金色阳光下的美丽山脉日落',
});
console.log(task.output);
图像到图像
转换现有图像:
const task = await client.call.createAndWait('api-slug', {
image: imageBuffer,
prompt: '将此图像转换为绘画风格',
});
参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
input_params | object | 是 | API 特定的输入参数 |
webhook_url | string | 否 | 异步完成通知的回调 URL |
idempotency_key | string | 否 | 幂等键,防止重复创建任务 |
支持的模型
DALL-E 3
最先进的图像生成模型,支持高质量的文本到图像生成。
const task = await client.call.createAndWait('api-slug', {
prompt: '一只穿着太空服的猫咪在月球上跳跃',
});
特点:
- 高质量图像生成
- 理解复杂的文本描述
- 支持多种艺术风格
Midjourney
专业的艺术图像生成模型,特别适合创作风格独特的作品。
const task = await client.call.createAndWait('api-slug', {
prompt: 'cyberpunk city at night, neon lights, rainy streets',
});
特点:
- 艺术风格强烈
- 适合创意设计
- 支持多种艺术流派
Stable Diffusion XL
开源的高性能模型,支持自定义训练和微调。
const task = await client.call.createAndWait('api-slug', {
prompt: 'fantasy landscape with dragons and castles',
negative_prompt: 'blurry, low quality, distorted',
});
特点:
- 开源模型
- 支持负面提示词
- 可自定义微调
高级功能
负面提示词
告诉模型不要生成什么内容:
const task = await client.call.createAndWait('api-slug', {
prompt: '美丽的人像',
negative_prompt: '模糊、低质量、变形、多余的肢体',
});
图像变体
基于现有图像生成变体:
const task = await client.call.createAndWait('api-slug', {
image: imageBuffer,
});
图像修复
修复或编辑图像的特定区域:
const task = await client.call.createAndWait('api-slug', {
image: originalImageBuffer,
mask: maskBuffer, // 透明区域将被重新生成
prompt: '在天空添加彩虹',
});
最佳实践
提示词技巧
- 具体描述:
好:一只毛茸茸的金色拉布拉多犬在公园草地上奔跑,阳光明媚 坏:狗 - 风格指定:
好:赛博朋克风格的城市夜景,霓虹灯反射在雨湿的街道上 差:城市夜景 - 质量关键词:
好:高质量照片,8K分辨率,专业摄影 差:随便画个图
输入参数
每个 API 都有自己特定的输入参数。请查看具体 API 的文档了解支持的参数。
任务状态
创建任务后,您可以轮询任务状态:
const taskId = task.id;
const status = await client.call.get(taskId);
console.log(status.state); // 'pending' | 'running' | 'completed' | 'failed'
示例代码
批量生成
async function generateMultipleImages(prompts: string[]) {
const results = await Promise.all(
prompts.map((prompt) =>
client.call.createAndWait('api-slug', { prompt })
)
);
return results;
}
const prompts = ['日落时分的海滩', '雪山上的小木屋', '雨中的城市街道'];
const images = await generateMultipleImages(prompts);
图像下载和处理
import { writeFile } from 'fs/promises';
async function downloadOutput(url: string, filename: string) {
const response = await fetch(url);
const buffer = await response.arrayBuffer();
await writeFile(filename, Buffer.from(buffer));
console.log(`输出已保存到 ${filename}`);
}
// 使用示例
const task = await client.call.createAndWait('api-slug', {
prompt: '彩色蝴蝶',
});
if (task.output?.url) {
await downloadOutput(task.output.url, 'butterfly.png');
}
图像生成可能需要一些时间,特别是使用高质量设置时。请耐心等待。