图生图 (image edit)
七牛云 AI 大模型推理 API 支持图生图(Image-to-Image)功能,兼容 OpenAI Images Edit API 接口格式,支持基于输入图像和文本描述生成新的图像,方便您集成到各种图像编辑和创意应用场景中。
Token API 接入点
七牛云 AI 大模型推理 API 提供两个接入域名:
- 主接入点:
https://openai.qiniu.com/v1 - 备接入点:
https://api.qnaigc.com/v1 - 使用前提:获取 API KEY(API 密钥)
支持接口列表
| 接口名 | 说明 |
|---|---|
| /images/edits | 图生图接口,根据输入图像和文本描述生成新的图像 支持模型:Gemini 2.5 Flash Image 等 输出格式:Base64 编码的图像数据 (PNG 格式) |
支持的模型列表
| 模型 ID | 模型名称 | 说明 | 状态 |
|---|---|---|---|
| gemini-2.5-flash-image | Gemini 2.5 Flash Image (Nano Banana) | 又称 Nano Banana,谷歌最新的快速图像模型,支持高质量的图像编辑、风格转换和内容修改 | ✅已推出 |
| kling-* | 可灵系列 | 快手可灵图生图模型系列,擅长基于输入图像的智能编辑和风格迁移,支持高质量的中文提示词 | 🚀即将推出 |
HTTP 调用示例
基础图像编辑
使用上一步获取的七牛云 API KEY 调用图生图接口:
# 调用图生图 API
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "data:image/png;base64,iVBORw0KGgo...",
"prompt": "将图片中的猫改成白色,背景改为蓝天白云"
}'
使用图片 URL
# 使用图片 URL 进行图生图
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "https://example.com/sample-image.jpg",
"prompt": "为这个场景添加日落效果,让整体色调更温暖"
}'
生成多张图像
# 批量生成多张编辑结果
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "data:image/png;base64,iVBORw0KGgo...",
"prompt": "将这张照片转换为水彩画风格",
"n": 4,
"size": "1024x1024",
}'
使用多张输入图像
# 使用多张图像作为输入
export OPENAI_BASE_URL="https://openai.qiniu.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": [
"data:image/png;base64,iVBORw0KGgo...",
"https://example.com/reference-image.jpg"
],
"prompt": "结合这两张图片的风格,生成一张新的艺术作品"
}'
请求参数说明
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
| Content-Type | string | 是 | 请求内容类型,固定值:application/json |
Body 参数 (JSON)
| 参数名 | 类型 | 必填 | 默认值 | 说明 | 模型支持 |
|---|---|---|---|---|---|
| model | string | 是 | - | 图像生成模型名称,如 gemini-2.5-flash-image |
- |
| image | string 或 array | 是 | - | 输入图像,支持以下格式: - Base64 data URI(如 data:image/png;base64,...)- 图片 URL(如 https://example.com/image.jpg)- 数组形式的多张图片 |
- |
| prompt | string | 是 | - | 图像编辑的文本描述提示词 | - |
| n | integer | 否 | 1 | 生成图像数量,取值范围:1-10 | - |
| size | string | 否 | - | 图像尺寸,格式:宽x高,支持以下尺寸:1024x1024、1536x1024、1792x1024、1024x1536、1024x1792、1344x768、768x1344、1248x832、832x1248、1184x864、864x1184、1152x896、896x1152、1536x672 |
- |
| mask | string | 否 | - | 遮罩图像 URL 或 Base64 data URI,用于指定编辑区域 | - |
| quality | string | 否 | - | 图像质量,可选值:standard(标准质量)、hd(高清质量) |
暂不支持 |
| background | string | 否 | - | 背景处理方式,可选值:transparent(透明)、opaque(不透明)、auto(自动) |
暂不支持 |
| input_fidelity | string | 否 | - | 输入图像保真度,可选值:high(高保真)、low(低保真) |
暂不支持 |
| output_format | string | 否 | png | 输出格式,可选值:png、jpeg、webp |
暂不支持 |
| output_compression | integer | 否 | - | 输出压缩质量,取值范围:0-100(仅适用于 webp/jpeg 格式) | 暂不支持 |
| response_format | string | 否 | b64_json | 响应格式,可选值:b64_json(Base64 编码)、url(图片 URL) |
暂不支持 |
| stream | boolean | 否 | false | 是否启用流式响应 | 暂不支持 |
参数详细说明
model
- 必填参数
- 指定使用的图像编辑模型
- 不同模型支持的参数和功能可能有所不同
- 示例:
gemini-2.5-flash-image
image
- 必填参数
- 输入图像,支持多种格式:
- Base64 data URI:使用
data:image/png;base64,前缀 + Base64 编码的图像数据 - 图片 URL:可访问的公网图片链接,如
https://example.com/image.jpg - 数组形式:支持传入多张图片,格式为
["url1", "url2"]或混合 data URI 和 URL
- Base64 data URI:使用
- 建议使用高质量的输入图像以获得更好的编辑效果
prompt
- 必填参数
- 图像编辑的文本描述提示词
- 建议:
- 清晰描述期望的编辑效果
- 包含风格、色彩、构图等具体细节
- 使用逗号分隔不同的描述要素
- 示例:
"将图片中的天空改为日落时分的橙红色,增加温暖的氛围""将照片转换为油画风格,保持主体不变,增强色彩饱和度""移除背景中的杂物,让背景变得简洁干净"
n
- 可选参数,默认值为 1
- 控制一次请求生成的图像数量
- 取值范围:1-10
- 注意:生成多张图片会消耗更多 tokens
size
- 可选参数
- 指定生成图像的尺寸,格式为
宽x高 - 支持以下尺寸规格:
- 正方形:
1024x1024 - 横向:
1536x1024、1792x1024、1344x768、1248x832、1184x864、1152x896、1536x672 - 纵向:
1024x1536、1024x1792、768x1344、832x1248、864x1184、896x1152
- 正方形:
- 具体支持的尺寸取决于所选模型
quality
- 可选参数
- 控制图像生成质量
- 可选值:
standard:标准质量hd:高清质量
background
- 可选参数
- 控制背景处理方式
- 可选值:
transparent:生成透明背景opaque:生成不透明背景auto:自动决定
input_fidelity
- 可选参数
- 控制对输入图像的保真程度
- 可选值:
high:高保真,生成的图像更接近原始输入low:低保真,允许更大的创意改动
mask
- 可选参数
- 遮罩图像,用于指定只编辑图像的特定区域
- 支持格式:
- Base64 data URI:
data:image/png;base64,... - 图片 URL:
https://example.com/mask.png
- Base64 data URI:
- 遮罩图像规则:
- 黑色 (#000000) 区域:保持原图不变
- 白色 (#FFFFFF) 区域:应用编辑效果
- 灰色区域:部分应用编辑效果
output_format
- 可选参数,默认为
png - 指定输出图像的格式
- 可选值:
png:PNG 格式,支持透明背景,文件较大jpeg:JPEG 格式,文件较小,不支持透明背景webp:WebP 格式,平衡质量和文件大小
output_compression
- 可选参数
- 输出图像的压缩质量
- 取值范围:0-100
- 0:最低质量,最小文件
- 100:最高质量,最大文件
- 仅适用于
webp和jpeg格式 - 不适用于
png格式
response_format
- 可选参数,默认为
b64_json - 指定响应中图像数据的格式
- 可选值:
b64_json:返回 Base64 编码的图像数据 (推荐)url:返回图片 URL(需模型支持)
stream
- 可选参数,默认为
false - 是否启用流式响应
- 部分模型支持流式返回中间结果
响应格式
成功响应
{
"created": 1234567890,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgA..."
},
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgB..."
}
],
"size": "1024x1024",
"output_format": "png",
"usage": {
"total_tokens": 6234,
"input_tokens": 1234,
"output_tokens": 5000,
"input_tokens_details": {
"text_tokens": 234,
"image_tokens": 1000
}
}
}
响应参数说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| created | integer | 响应创建时间戳 (Unix 时间戳,秒) |
| data | array | 生成的图像数据数组 |
| data[].b64_json | string | Base64 编码的图像数据 |
| size | 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 数 |
如何使用返回的图像数据
响应中的 b64_json 字段包含 Base64 编码的图像数据,可通过以下方式使用:
1. 在 HTML 中直接显示
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA..." />
使用场景示例
场景 1:风格转换
将普通照片转换为艺术风格:
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "https://example.com/photo.jpg",
"prompt": "将这张照片转换为印象派油画风格,使用莫奈的色彩表现手法",
}'
场景 2:背景替换
更换图片背景:
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "https://example.com/person.jpg",
"prompt": "保持人物不变,将背景替换为海滩日落场景",
}'
场景 3:图像增强
提升图像质量:
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "https://example.com/low-quality.jpg",
"prompt": "提升图像清晰度,增强色彩饱和度和对比度,去除噪点",
"size": "1792x1024"
}'
场景 4:局部编辑 (使用遮罩)
只编辑图像的特定区域:
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"image": "https://example.com/room.jpg",
"mask": "https://example.com/room-mask.png",
"prompt": "将墙壁改成深蓝色",
}'
常见问题
Q: 图生图和文生图有什么区别?
A: 文生图 (/images/generations) 是纯粹根据文本描述生成全新的图像;图生图 (/images/edits) 则是基于输入的图像进行编辑和改造,可以保留原图的部分特征。
Q: 支持哪些输入图像格式?
A: 支持常见的图像格式,包括 PNG、JPEG、WebP 等。可以通过 Base64 data URI 或公网可访问的图片 URL 提供输入图像。
Q: 如何控制生成结果更接近原图?
A: 可以使用 input_fidelity: "high" 参数来提高对原图的保真度,生成的图像会更接近输入图像。
Q: 如何处理多张输入图像?
A: 将 image 参数设置为数组格式,如 ["url1", "url2"],模型会结合多张输入图像的特征进行编辑。
Q: 如何将生成的图像保存到七牛云对象存储?
A: 推荐使用七牛对象存储来存储生成的图像。我们提供了多种语言的上传 SDK,简单易用,欢迎查看我们的【SDK 中心】来了解。更多对象存储信息欢迎参考对象存储的【产品使用文档】。
Q: 遮罩图像 (mask) 应该如何制作?
A: 遮罩图像应该是黑白图像:
- 白色区域 (#FFFFFF):表示需要编辑的区域
- 黑色区域 (#000000):表示保持不变的区域
- 灰色区域:会部分应用编辑效果
您可以使用 Photoshop、GIMP 等图像编辑软件创建遮罩图像。