文生图 (image generate)
七牛云 AI 大模型推理 API 支持文生图(Text-to-Image)功能,兼容 OpenAI Images API 接口格式,支持多种主流图像生成模型,方便您集成到各种业务和应用场景中。
Token API 接入点
七牛云 AI 大模型推理 API 接入域名:
- 主接入点:
https://api.qnaigc.com/v1 - 备接入点:
https://openai.qiniu.com/v1 - 使用前提:获取 API KEY(API 密钥)
支持接口列表
| 接口名 | 说明 |
|---|---|
| /images/generations | 文生图接口,根据文本描述生成图像,支持多种图像生成模型 支持模型:Gemini 2.5 Flash Image(又称 Nano Banana)和 kling 系列模型等 输出格式:Base64 编码的图像数据(PNG 格式);注意 kling 系列模型使用异步任务的模式,所以返回的结果是一个任务 ID |
支持的模型列表
| 模型 ID | 模型名称 | 说明 | 状态 |
|---|---|---|---|
| gemini-2.5-flash-image | Gemini 2.5 Flash Image (Nano Banana) | 又称 Nano Banana,谷歌最新的快速文生图模型,支持高质量图像生成 | ✅已推出 |
| kling-v1 | kling v1 | 文生图 V1.0 模型 | ✅已推出 |
| kling-v1-5 | kling v1-5 | 文生图 V1.5 模型 | ✅已推出 |
| kling-v2 | kling v2 | 文生图 V2.0 系列模型 | ✅已推出 |
| kling-v2-new | kling v2-new | 文生图 V2.0 系列模型 | ✅已推出 |
| kling-v2-1 | kling v2-1 | 文生图 V2.1 系列模型 | ✅已推出 |
HTTP 调用示例
基础图像生成
使用上一步获取的七牛云 API KEY 调用文生图接口:
# 调用文生图 API
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"prompt": "一只可爱的橘猫坐在窗台上看着夕阳,照片风格,高清画质"
}'
生成多张高质量图像
# 生成多张图像
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"prompt": "主题是未来城市的天际线,霓虹灯光,赛博朋克风格",
"n": 6
}'
使用采样参数控制生成
# 使用高级参数控制图像生成
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"prompt": "梦幻森林中的精灵小屋,魔法光芒环绕",
"temperature": 0.8,
"top_p": 0.95
}'
请求参数说明
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
| Content-Type | string | 是 | 请求内容类型,固定值:application/json |
Body 参数(JSON)
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 模型支持 |
|---|---|---|---|---|---|
| model | string | 是 | - | 图像生成模型名称,如 gemini-2.5-flash-image |
- |
| prompt | string | 是 | - | 图像生成的文本描述提示词 | - |
| n | integer | 否 | 1 | 生成图像数量,取值范围:1-10 | - |
| size | string | 否 | - | 图像尺寸 | 暂不支持 |
| quality | string | 否 | - | 图像质量,可选值:standard(标准质量)、hd(高清质量) |
暂不支持 |
| style | string | 否 | - | 图像风格,可选值:vivid(鲜艳生动)、natural(自然真实) |
暂不支持 |
| temperature | float | 否 | - | 生成温度,取值范围:0.0-2.0,控制生成的随机性 | - |
| top_p | float | 否 | - | 核采样参数,取值范围:0.0-1.0 | - |
| top_k | integer | 否 | - | Top-K 采样参数,最小值:1 | - |
| negative_prompt | string | 否 | - | 负向文本提示词 | 仅限 kling 系列模型 |
| image | string | 否 | - | 参考图像,内容为可公开访问的 url 链接 | 仅限 kling 系列模型 |
| image_reference | string | 否 | - | 图片参考类型 | 仅 kling-v1-5 支持当前参数 |
| image_fidelity | float | 否 | 0.5 | 生成过程中对用户上传图片的参考强度 | 仅限 kling 系列模型 |
| human_fidelity | float | 否 | 0.45 | 面部参考强度,即参考图中人物五官相似度 | 仅限 kling 系列模型 |
| aspect_ratio | string | 否 | “16:9” | 生成图片的画面纵横比(宽:高) | 仅限 kling 系列模型 |
参数详细说明
model
- 必填参数
- 指定使用的图像生成模型
- 不同模型支持的参数和功能可能有所不同
- 示例:
gemini-2.5-flash-image
prompt
- 必填参数
- 图像生成的文本描述提示词
- 建议:提示词越详细、具体,生成的图像质量越好
- 建议包含风格、光线、构图、色彩等细节
- 使用逗号分隔不同的描述要素
- 示例:
"一只橘色的猫,坐在窗台上,温暖的阳光,柔和的阴影,专业摄影,高清画质,4K 分辨率"
n
- 可选参数,默认值为 1
- 控制一次请求生成的图像数量
- 取值范围:1-10
- 注意:生成多张图片会消耗更多 tokens
size
- 可选参数
- 指定生成图像的尺寸,格式为
宽x高
quality
- 可选参数
- 控制图像生成质量
- 可选值:
standard:标准质量hd:高清质量
style
- 可选参数
- 控制图像风格
- 可选值:
vivid:鲜艳、生动的风格natural:自然、真实的风格
temperature
- 可选参数
- 控制生成的随机性和创意性
- 取值范围:0.0-2.0
- 较低的值(如 0.2)使输出更确定和一致
- 较高的值(如 1.0)使输出更随机和创意
top_p
- 可选参数
- 核采样参数,用于控制生成的多样性
- 取值范围:0.0-1.0
- 较低的值会使生成更集中于高概率选项
- 注意:不建议同时修改 temperature 和 top_p
top_k
- 可选参数
- Top-K 采样参数
- 限制每步采样时考虑的候选项数量
negative_prompt
负向文本提示词
- 不能超过2500个字符
- 此外,图生图(即image字段不为空时)场景下,不支持负向提示词
image
- 图片格式支持 .jpg/.jpeg/.png
- 图片文件大小不能超过10MB,图片宽高尺寸不小于300px,图片宽高比介于1:2.5 ~ 2.5:1之间
- image_reference参数不为空时,当前参数必填
image_reference
图片参考类型
- 枚举值:
subject(角色特征参考),face(人物长相参考) - 使用face(人物长相参考)时,上传图片需仅含1张人脸。
- 使用
kling-v1-5且 image 参数不为空时,当前参数必填 - 仅
kling-v1-5支持当前参数
image_fidelity
生成过程中对用户上传图片的参考强度
- 取值范围:[0,1],数值越大参考强度越大
human_fidelity
面部参考强度,即参考图中人物五官相似度
- 仅 image_reference 参数为 subject 时生效
- 取值范围:[0,1],数值越大参考强度越大
aspect_ratio
生成图片的画面纵横比(宽:高)
- 枚举值:16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3, 21:9
响应格式
成功响应
{
"created": 1234567890,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgA..."
},
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgB..."
}
],
"output_format": "png",
"usage": {
"total_tokens": 5234,
"input_tokens": 234,
"output_tokens": 5000,
"input_tokens_details": {
"text_tokens": 234,
"image_tokens": 0
}
}
}
使用 kling 系列模型返回格式如下:
{
"task_id": "image-1762159125266058362-1383010xxx"
}
响应参数说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| created | integer | 响应创建时间戳(Unix 时间戳,秒) |
| data | array | 生成的图像数据数组 |
| data[].b64_json | string | Base64 编码的图像数据 |
| size | string | 图像尺寸 |
| quality | string | 图像质量 |
| output_format | string | 输出格式,默认为 png |
| usage | object | Token 使用统计信息 |
| usage.total_tokens | integer | 总 token 数 |
| usage.input_tokens | integer | 输入 token 数 |
| usage.output_tokens | integer | 输出 token 数(图像生成消耗) |
| usage.input_tokens_details | object | 输入 token 详情(若有) |
| usage.input_tokens_details.text_tokens | integer | 文本 token 数 |
| usage.input_tokens_details.image_tokens | integer | 图像 token 数 |
| task_id | string | 目前为 kling 系列模型独有的返回结果,task_id 为 kling 模型异步生成图像的任务ID |
如何使用返回的图像数据?
响应中的 b64_json 字段包含 Base64 编码的图像数据,可通过以下方式使用:
1. 在 HTML 中直接显示
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA..." />
2. 使用命令行工具保存图像
# 使用 jq 和 base64 命令提取并保存图像
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"prompt": "一只可爱的橘猫"
}' | jq -r '.data[0].b64_json' | base64 -d > generated_image.png
查询异步生成图像任务状态
| 接口名 | 说明 |
|---|---|
| /v1/images/tasks/:task_id | kling 生成图像异步任务独有的状态查询接口, 用于查询生成图像异步任务的当前状态以及最终生成的图像结果。 |
参数说明:
| 参数名称 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|
| task_id | string | 是 | 生成图像异步任务 ID,在使用 kling 系列模型调用 /images/generations 接口的结果生成 请求路径参数,直接将值填写在请求路径中 |
使用示例可以参考如下,假设你已经使用 /images/generations 接口使用 kling 模型请求发起了一个生成图像异步任务,任务 ID 是 image-1762159125266058362-1383010xxx。
# 调用查询异步生成图像任务状态 API
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/v1/images/tasks/image-1762159125266058362-1383010xxx" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY"
成功响应示例如下:
{
"task_id": "image-1762159125266058362-1383010xxx",
"created": 1761793032,
"status": "succeed",
"status_message": "成功",
"data": [
{
"index": 0,
"url": "https://aitoken-image.qnaigc.com/1383010xxx/image-1761793032508597404-1383010xxx/0.png?e=1763089082&token=IDB69r4gicDbMfrecarthgw1btTTWEFNg9i5_yasXqhp:JapC2EihLvSADMficht3pZVn5Xc="
}
],
"quantity": 1
}
上述示例响应字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| task_id | string | 图像生成任务的唯一标识符 |
| created | integer | 表示任务创建时间的 Unix 时间戳 |
| status | string | 任务的当前状态(例如:succeed 成功,更多看如下状态码细节) |
| status_message | string | 描述当前状态的消息,例如在 succeed 状态时,这个字段信息描述是 成功 |
| data | array | |
| data[].index | integer | 图像在生成序列中的索引 |
| data[].url | string | 访问生成图像文件的可直接访问 URL |
| quantity | integer | 此任务中生成的图像数量,同时该数量会用于计量计算 |
status 字段可能的取值包括:
- submitted:任务已接收,等待处理
- processing:任务正在处理中
- succeed:任务成功完成,图像已生成并可访问
- failed:任务在处理过程中失败
常见问题
Q: 如何将生成的图像保存到七牛云对象存储?
A: 推荐使用七牛对象存储来存储生成的图像。我们提供了多种语言的上传 SDK,简单易用,欢迎查看我们的【SDK 中心】来了解。更多对象存储信息欢迎参考对象存储的【产品使用文档】。
参考文档
文档反馈
(如有产品使用问题,请 提交工单)