AI 大模型推理

  • AI 大模型推理 > API 文档 > 图生图 (image edit)

    图生图 (image edit)

    最近更新时间: 2025-11-05 17:42:46

    七牛云 AI 大模型推理 API 支持图生图(Image-to-Image)功能,兼容 OpenAI Images Edit API 接口格式,支持基于输入图像和文本描述生成新的图像,方便您集成到各种图像编辑和创意应用场景中。

    Token API 接入点

    七牛云 AI 大模型推理 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-v2 kling v2 图生图 V2.0 模型 ✅已推出

    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/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://api.qnaigc.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://api.qnaigc.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
        }'
    

    使用多张输入图像

    # 使用多张图像作为输入
    export OPENAI_BASE_URL="https://api.qnaigc.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": "结合这两张图片的风格,生成一张新的艺术作品"
        }'
    

    使用Kling模型

    # kling 模型使用多张图像作为输入
    export OPENAI_BASE_URL="https://api.qnaigc.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": "kling-v2",
        "image": "",
        "prompt": "综合两个图像画一个漫画图",
        "subject_image_list":[
            {
                "subject_image":"https://aitoken-image.qnaigc.com/1383010xxx/image-1761793032508597404-1383010xxx/0.png?e=1763089082&token=IDB69r4gicDbMfrecarthgw1btTTWEFNg9i5_yasXqhp:JapC2EihLvSADMficht3pZVn5Xc="
            },
            {
                "subject_image":"https://aitoken-image.qnaigc.com/1383010xxx/image-1761793032508597404-1383010xxx/0.png?e=1763089082&token=IDB69r4gicDbMfrecarthgw1btTTWEFNg9i5_yasXqhp:JapC2EihLvSADMficht3pZVn5Xc="
            }
        ]
    }'
    

    请求参数说明

    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 - 图像尺寸 暂不支持
    mask string - 遮罩图像 URL 或 Base64 data URI,用于指定编辑区域 -
    quality string - 图像质量,可选值:standard(标准质量)、hd(高清质量) 暂不支持
    background string - 背景处理方式,可选值:transparent(透明)、opaque(不透明)、auto(自动) 暂不支持
    input_fidelity string - 输入图像保真度,可选值:high(高保真)、low(低保真) 暂不支持
    output_format string png 输出格式,可选值:pngjpegwebp 暂不支持
    output_compression integer - 输出压缩质量,取值范围:0-100(仅适用于 webp/jpeg 格式) 暂不支持
    response_format string b64_json 响应格式,可选值:b64_json(Base64 编码)、url(图片 URL) 暂不支持
    stream boolean false 是否启用流式响应 暂不支持
    subject_image_list array - 图生图的参考图片列表 仅限kling模型
    > subject_image_list.subject_image string - 图生图的参考图片,内容为可公开访问的 url 链接 仅限kling模型
    scene_image sting - 场景参考图,内容为可公开访问的 url 链接 仅限kling模型
    style_image sting - 风格参考图,内容为可公开访问的 url 链接 仅限kling模型
    aspect_ratio sting “16:9” 生成图片的画面纵横比(宽:高) 仅限kling模型

    参数详细说明

    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
    • 建议使用高质量的输入图像以获得更好的编辑效果

    prompt

    • 必填参数
    • 图像编辑的文本描述提示词
    • 建议:
      • 清晰描述期望的编辑效果
      • 包含风格、色彩、构图等具体细节
      • 使用逗号分隔不同的描述要素
    • 示例:
      • "将图片中的天空改为日落时分的橙红色,增加温暖的氛围"
      • "将照片转换为油画风格,保持主体不变,增强色彩饱和度"
      • "移除背景中的杂物,让背景变得简洁干净"

    n

    • 可选参数,默认值为 1
    • 控制一次请求生成的图像数量
    • 取值范围:1-10
    • 注意:生成多张图片会消耗更多 tokens

    size

    • 可选参数
    • 指定生成图像的尺寸,格式为 宽x高

    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
    • 遮罩图像规则:
      • 黑色 (#000000) 区域:保持原图不变
      • 白色 (#FFFFFF) 区域:应用编辑效果
      • 灰色区域:部分应用编辑效果

    output_format

    • 可选参数,默认为 png
    • 指定输出图像的格式
    • 可选值:
      • png:PNG 格式,支持透明背景,文件较大
      • jpeg:JPEG 格式,文件较小,不支持透明背景
      • webp:WebP 格式,平衡质量和文件大小

    output_compression

    • 可选参数
    • 输出图像的压缩质量
    • 取值范围:0-100
      • 0:最低质量,最小文件
      • 100:最高质量,最大文件
    • 仅适用于 webpjpeg 格式
    • 不适用于 png 格式

    response_format

    • 可选参数,默认为 b64_json
    • 指定响应中图像数据的格式
    • 可选值:
      • b64_json:返回 Base64 编码的图像数据 (推荐)
      • url:返回图片 URL(需模型支持)

    stream

    • 可选参数,默认为 false
    • 是否启用流式响应
    • 部分模型支持流式返回中间结果

    subject_image_list

    • 最多支持4张图片,最少支持1张图片

    subject_image_list.subject_image

    • 图片格式支持.jpg / .jpeg / .png
    • 图片文件大小不能超过10MB,图片宽高尺寸不小于300px,图片宽高比要在1:2.5 ~ 2.5:1之间

    scene_image
    场景参考图

    • 图片格式支持.jpg / .jpeg / .png
    • 图片文件大小不能超过10MB,图片宽高尺寸不小于300px,图片宽高比要在1:2.5 ~ 2.5:1之间

    style_image

    • 图片格式支持.jpg / .jpeg / .png
    • 图片文件大小不能超过10MB,图片宽高尺寸不小于300px,图片宽高比要在1:2.5 ~ 2.5:1之间

    aspect_ratio

    • 枚举值:16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3, 21:9

    响应格式

    成功响应

    使用 Gemini 2.5 Flash Image 系列模型返回格式如下:

    {
      "created": 1234567890,
      "data": [
        {
          "b64_json": "iVBORw0KGgoAAAANSUhEUgA..."
        },
        {
          "b64_json": "iVBORw0KGgoAAAANSUhEUgB..."
        }
      ],
      "output_format": "png",
      "usage": {
        "total_tokens": 6234,
        "input_tokens": 1234,
        "output_tokens": 5000,
        "input_tokens_details": {
          "text_tokens": 234,
          "image_tokens": 1000
        }
      }
    }
    

    使用 kling 系列模型返回格式如下:

    {
        "task_id": "image-1762159125266058362-1383010xxx"
    }
    

    响应参数说明

    字段名 类型 说明
    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 数
    task_id string 目前为 kling 系列模型独有的返回结果,task_id 为 kling 模型异步生成图像的任务 ID

    如何使用返回的图像数据

    响应中的 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": "提升图像清晰度,增强色彩饱和度和对比度,去除噪点"
        }'
    

    场景 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": "将墙壁改成深蓝色",
        }'
    

    查询异步生成图像任务状态

    该接口使用方式同文生图文档中的 查询异步生成图像任务状态 接口。

    接口名 说明
    /v1/images/tasks/:task_id kling 生成图像异步任务独有的状态查询接口,
    用于查询生成图像异步任务的当前状态以及最终生成的图像结果。

    参数说明:

    参数名称 参数类型 是否必填 参数描述
    task_id string 生成图像异步任务 ID,在使用 kling 系列模型调用 /images/generations 接口的结果生成
    请求路径参数,直接将值填写在请求路径中

    使用示例可以参考如下,假设你已经使用 /images/edits 接口使用 kling 模型请求发起了一个生成图像异步任务,任务 ID 是 image-1762159125266058362-1383010xxx

    # 调用查询异步生成图像任务状态
    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: 文生图 (/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 等图像编辑软件创建遮罩图像。

    参考文档

    以上内容是否对您有帮助?