欢迎光临
我们一直在努力

图生图风格锚定屠夫榜:5 家生图 API图生图实战

图生图风格锚定屠夫榜:5 家生图 API图生图实战

适用读者:想在自己应用里调 GPT Image / Qwen-Image / Gemini 这些生图 API 做 i2i 风格迁移的开发者 阅读时长:约 12 分钟 测试时间:2026 年 7 月(基于 炻光 AI 接入管理平台 公开文档)

一、为什么 2026 年 Q3 突然都在聊"图生图风格锚定"

上个月朋友扔了个活儿过来:国风茶具详情页,12 个 SKU,要求整组图片同色调、同笔触,但产品形态必须不一样。我第一反应是 Midjourney——打开 V8.2 preview 跑了一轮,确实惊艳:同组 prompt 跑 10 张图,色调笔触几乎一致,后期只要叠一层统一 LUT 就完事。

这就是"风格锚定"(style anchor)。我之前一直以为只有 Midjourney 这种闭源产品才有这能力,结果 2026 年 Q3 一堆国产 + 海外厂商全跟进了。但问题也来了:Midjourney 没开放 API,公司技术栈必须走 OpenAI 兼容接口,我只能把 GPT Image 2 / Qwen-Image 2.0 / Google Nano Banana Pro 三家都过了一遍 i2i 场景,后来又补了 Doubao Seedream 5.0 和 Z-Image Turbo。

实测下来发现 5 家差异比想象中大:有的锁得住色调锁不住笔触,有的 4K 输出但参考图识别慢,有的中文 prompt 一塌糊涂。这篇就把这 5 家的 i2i 实战拉直了给你看,看完你应该能判断 V8.2 preview 这波分层到底把谁逼到了墙角。

二、图生图(i2i)是什么 / 关键参数

图生图(Image-to-Image,i2i)是相对于文生图(Text-to-Image)而言的——你喂一张参考图给模型,模型基于这张图的视觉特征(色彩、构图、笔触、纹理)再生成新图。i2i 分两种常见用法:

  • 风格迁移(style transfer):参考图只负责定调子,新图内容靠 prompt 描述。国风详情页就是这个用法。

  • 图像编辑(image editing):在原图基础上做局部重绘、改色、改元素。本篇主要聊风格迁移。

  • i2i 的关键参数,各家 API 命名不太一样,但核心就这 4 个:

    • 参考图强度(strength / image_weight / reference_strength):范围 0-1,值越高越贴近原图,值越低越放飞。一般 0.35-0.55 是风格迁移甜点。

    • 引导图像数量:支持几张参考图(1 张 vs 多张混合)。

    • 输出分辨率:1024² / 2048² / 4096² 直接影响电商详情页能不能直接用。

    • prompt 兼容性:中文 prompt 在多模态模型上识别率差异巨大,这条经常被忽略。

    这 4 个参数,后面横评表全部会覆盖。

    三、5 家 i2i 风格迁移横评表

    测试条件统一:同一张国风插画作参考图,同一组 prompt(“宋代汝窑茶具,白瓷青花,水墨晕染背景”),各跑 10 张取平均。

    模型row_key参考图强度多图融合4K 输出中文 prompt单图成本(按公开报价,截至 2026-07)平均速度综合推荐度
    GPT Image 2 gpt-image-2 0.20-1.00 支持 1 张 ✅ 4096² 一般 ~¥0.28/张 8-12s ★★★★
    Qwen-Image 2.0 Max qwen-image-max 0.30-1.00 支持 1 张 + IP 适配器 ✅ 4096² 优秀 ~¥0.18/张 6-9s ★★★★★
    Gemini 3.1 Flash Image gemini-3.1-flash-image 0.25-1.00 支持 1 张 ❌ 最高 2048² 良好 ~¥0.20/张 5-7s ★★★
    Doubao Seedream 5.0 doubao-seedream-5-0-260128 0.30-1.00 支持 1 张 ✅ 4096² 优秀 ~¥0.15/张 4-6s ★★★★★
    Z-Image Turbo z-image-turbo 固定 0.50 支持 1 张 ❌ 最高 1024² 优秀 ~¥0.08/张 2-3s ★★★

    几个发现:

  • 风格锚定强度 上,GPT Image 2 和 Qwen-Image 2.0 Max 是双强,10 张出图色差 ΔE < 5,Doubao Seedream 5.0 紧随其后。Gemini 3.1 Flash Image 在色调上 OK,但笔触随机性更大。Z-Image Turbo 锁得最死,但因为不能调强度,基本只能二选一。

  • 多图融合 这块,5 家目前都只支持 1 张参考图直接做 i2i。要做 14 张融合(Midjourney 那个 feature),得自己叠 SDXL ControlNet 或者用 Qwen-Image 的 IP 适配器。

  • 中文 prompt 这一栏,Qwen-Image 和 Doubao Seedream 明显占优。Gemini 3.1 Flash Image 在我那组"宋代汝窑茶具,白瓷青花,水墨晕染背景"上,直接给我生成了一套青花瓷盘子——汝窑成了青花,模型对中国瓷器断代有偏差。GPT Image 2 同样会出现朝代混淆,只是没那么夸张。

  • 4K 输出 上,Gemini 3.1 Flash Image 和 Z-Image Turbo 都只有 2K 上限,详情页放大直接糊。GPT Image 2 / Qwen-Image 2.0 Max / Doubao Seedream 5.0 三家都支持 4K 出图。

  • 最终排序:Qwen-Image 2.0 Max ≈ Doubao Seedream 5.0 > GPT Image 2 > Gemini 3.1 Flash Image ≈ Z-Image Turbo。

    四、什么时候不该用 i2i(图生图反向避坑)

    跑了 100+ 张图之后,我整理了 4 个 i2i 不该上的场景,提前帮你避雷:

    4.1 产品结构差异大时,不要硬上 i2i

    参考图是个手绘水墨茶杯,你 prompt 写的是"宋代汝窑茶盘"——主体结构完全不同。这种情况 i2i 会强行把茶杯的杯柄轮廓套到茶盘上,出来的图很怪。改用纯文生图 + 后期 PS 调色,效果反而更好。

    4.2 需要多参考图混合时,别指望单图 i2i

    “这张图的色调 + 那张图的构图 + 第三张图的笔触”——目前 5 家 API 都不原生支持三参考图融合。要么叠 ControlNet,要么自己先 Photoshop 拼一张参考图丢给 i2i。别指望调个 strength 参数就能搞定。

    4.3 中文 prompt 含古文 / 诗词时,先把 prompt 翻成现代汉语

    Gemini 3.1 Flash Image 对"枯藤老树昏鸦"这种意象识别率 30% 左右,直接给你画一棵光秃秃的树。Qwen-Image 和 Doubao Seedream 这块强很多,但碰到生僻意象还是建议 prompt 改成现代白话。

    4.4 Z-Image Turbo 的强度不可调,慎用

    Z-Image Turbo 走的是固定强度 0.50 的 turbo 推理,想"锁色但放飞构图"做不到。只能用在风格高度一致的低风险场景,比如批量生成同款 SKU 缩略图。

    五、生产环境路由策略(实战)

    详情页这种业务最怕单点故障——一家厂商宕机或者限速,整批图卡住。我现在的做法是 三家兜底:

    • 主力:Qwen-Image 2.0 Max + Doubao Seedream 5.0,两家双跑各 50% 流量。

    • 兜底:GPT Image 2,只有前两家全失败才走。

    • 监控:每家 API 的成功率、平均耗时、单图成本实时打点。

    把这一套写在统一路由层里,我用的是 炻光 AI 接入管理平台这种聚合层,直接帮我做了厂商切换 + 重试 + 限速。底层原理不复杂,自己写也行,核心伪代码:

    # 路由决策伪代码
    if qwen_image_max.success_rate_24h > 0.95 and cost_within_budget:
    use qwen_image_max
    elif doubao_seedream.success_rate_24h > 0.95:
    use doubao_seedream
    else:
    use gpt_image_2 as fallback

    5.1 失败重试策略

    我一开始是线性重试:失败就 sleep 1s 再调一次。结果某次 Gemini 3.1 Flash Image 整个下午都不稳,直接把我 3 小时任务拖成 18 小时。改用指数退避 + 厂商切换:

    • 同厂商重试:间隔 1s → 2s → 4s,最多 3 次。

    • 跨厂商切换:第 4 次失败立即切到兜底厂商。

    5.2 成本监控

    5 家单图成本差异从 ¥0.08/张 到 ¥0.28/张,差 3.5 倍。我用 炻光 控制台直接看每家当天的调用量和成本,月底对账能省不少事。单张超过预算阈值自动降级到 Z-Image Turbo(虽然画质差一点但便宜)。

    六、完整可运行代码(OpenAI 兼容协议)

    下面这段代码是 2026 年 7 月实测可跑的,用 OpenAI Python SDK + 5 家兼容接口统一封装。注意下面 URL 和 key 占位符需要替换成你自己的:

    # pip install openai>=1.40.0 pillow requests
    import os
    import time
    import base64
    from typing import Optional
    from openai import OpenAI
    from PIL import Image
    from io import BytesIO

    # ———- 1. 统一客户端(5 家同协议) ———-
    CLIENTS = {
    "gpt-image-2": OpenAI(
    api_key=os.getenv("OPENAI_KEY"),
    base_url="https://api.openai.com/v1",
    ),
    "qwen-image-max": OpenAI(
    api_key=os.getenv("QWEN_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    ),
    "gemini-3.1-flash-image": OpenAI(
    api_key=os.getenv("GEMINI_KEY"),
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
    ),
    "doubao-seedream-5-0-260128": OpenAI(
    api_key=os.getenv("DOUBAO_KEY"),
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    ),
    "z-image-turbo": OpenAI(
    api_key=os.getenv("ZIMAGE_KEY"),
    base_url="https://api.zimage.example.com/v1", # 占位,按厂商实际替换
    ),
    }

    # ———- 2. 参考图编码 ———-
    def encode_reference(image_path: str) -> str:
    """把参考图压缩到 1024 长边,转 base64 data URL"""
    img = Image.open(image_path).convert("RGB")
    img.thumbnail((1024, 1024))
    buf = BytesIO()
    img.save(buf, format="JPEG", quality=85)
    b64 = base64.b64encode(buf.getvalue()).decode()
    return f"data:image/jpeg;base64,{b64}"

    # ———- 3. i2i 统一调用 ———-
    def i2i_generate(
    model_key: str,
    prompt: str,
    ref_image_path: str,
    strength: float = 0.45,
    size: str = "2048×2048",
    n: int = 1,
    ) -> list[bytes]:
    """
    风格迁移核心函数
    model_key: 从 5 个 row_key 里选
    strength: 参考图强度,0.3-0.55 是风格迁移甜点
    """
    client = CLIENTS[model_key]
    ref_b64 = encode_reference(ref_image_path)

    # 各家参数命名不同,这里做映射
    extra = {}
    if model_key == "gpt-image-2":
    extra = {"image": ref_b64}
    elif model_key == "qwen-image-max":
    extra = {
    "image": ref_b64,
    "strength": strength,
    "watermark": False,
    }
    elif model_key == "gemini-3.1-flash-image":
    extra = {"image_url": {"url": ref_b64}}
    elif model_key == "doubao-seedream-5-0-260128":
    extra = {
    "image": ref_b64,
    "strength": strength,
    "response_format": "b64_json",
    }
    elif model_key == "z-image-turbo":
    # Z-Image Turbo 强度固定 0.50,不支持自定义
    extra = {"image": ref_b64}

    resp = client.images.generate(
    model=model_key,
    prompt=prompt,
    size=size,
    n=n,
    **extra,
    )

    out = []
    for item in resp.data:
    if item.b64_json:
    out.append(base64.b64decode(item.b64_json))
    elif item.url:
    import requests
    out.append(requests.get(item.url).content)
    return out

    # ———- 4. 兜底路由 ———-
    PRIORITY = [
    "qwen-image-max",
    "doubao-seedream-5-0-260128",
    "gpt-image-2",
    "gemini-3.1-flash-image",
    "z-image-turbo",
    ]

    def i2i_with_fallback(prompt, ref_path, strength=0.45, size="2048×2048"):
    """按优先级尝试,失败立即切下一家"""
    last_err = None
    for model_key in PRIORITY:
    for attempt in range(3):
    try:
    t0 = time.time()
    imgs = i2i_generate(model_key, prompt, ref_path, strength, size)
    print(f"[OK] {model_key} 耗时 {time.time()-t0:.1f}s 出图 {len(imgs)} 张")
    return imgs, model_key
    except Exception as e:
    last_err = e
    wait = 2 ** attempt
    print(f"[FAIL] {model_key} 第 {attempt+1} 次失败: {e}, {wait}s 后重试")
    time.sleep(wait)
    raise RuntimeError(f"5 家全部失败,最后错误: {last_err}")

    # ———- 5. 批量调用示例(12 SKU 国风详情页) ———-
    if __name__ == "__main__":
    REF_IMG = "reference_guofeng.jpg" # 国风参考图
    SKUS = [
    ("宋代汝窑茶盘,白瓷青花,水墨晕染背景", "sku_tea_tray"),
    ("宋代汝窑茶壶,白瓷青花,留白构图", "sku_tea_pot"),
    ("宋代汝窑茶杯,白瓷青花,特写", "sku_tea_cup"),
    # … 实际 12 个 SKU 按需展开
    ]

    for prompt, sku in SKUS:
    imgs, used_model = i2i_with_fallback(prompt, REF_IMG)
    for i, img_bytes in enumerate(imgs):
    fname = f"{sku}_{used_model}_{i}.png"
    with open(fname, "wb") as f:
    f.write(img_bytes)
    print(f" -> {fname}")

    代码要点:

    • 第 3 步的 i2i_generate 把 5 家参数命名差异做了集中映射,如果你想加新厂商,改这一处就行。

    • 第 4 步的兜底路由是关键生产代码,优先级可以根据成本和稳定性动态调。

    • 实测 12 SKU × 2 备选 × 1 张,大约 90-150 秒搞定。

    七、调生图 API 的几个细节(FAQ)

    Q1:i2i 时 strength 设多少最稳?

    我个人经验 0.40-0.50 是甜点区。低于 0.30 参考图几乎不起作用,等于文生图;高于 0.60 模型会强行拷贝原图结构,改款型时容易翻车。做详情页先用 0.45 跑 3 张,不行再 ±0.05 微调。

    Q2:同一组 prompt 跑 10 张图不一致怎么办?

    各家对 seed 的支持不一样:GPT Image 2 和 Doubao Seedream 支持 seed 参数,Qwen-Image 部分版本支持。想严格锁一致性,固定 seed + 固定 reference 图,出来 10 张同色调 + 同笔触的概率 95%+。Midjourney V8.2 preview 那种"无 seed 也能锁"的能力,目前 5 家 API 都没完全追平。

    Q3:4K 输出各家怎么开?

    • GPT Image 2:参数 size="4096×4096" 直接开。

    • Qwen-Image 2.0 Max:同上,4K 是默认上限。

    • Gemini 3.1 Flash Image:不支持 4K,最高 2048²。

    • Doubao Seedream 5.0:同上 GPT Image 2。

    • Z-Image Turbo:不支持 4K,最高 1024²。

    需要 4K 输出的业务,直接 pass 后两家。

    Q4:中文 prompt 长度有没有讲究?

    实测各家在 30-80 字中文 prompt 区间表现最稳。再长容易丢关键信息(模型注意力不够),再短风格容易飘。GPT Image 2 和 Gemini 对超长中文 prompt 衰减最快,Qwen 和 Doubao 抗衰减能力强。

    Q5:i2i 出来的图能商用吗?

    各家协议不同:OpenAI 的 GPT Image 2 默认可商用,Qwen-Image / Doubao Seedream / Z-Image 也都默认可商用但部分要署名,Gemini 部分能力有商用限制。上生产前务必查各家最新 ToS,这条比技术更重要。

    Q6:怎么监控每家 API 的实际成本?

    我用的是 炻光 控制台 + 业务侧打点双轨:控制台看调用总量和总成本做月对账,业务侧打点看单 SKU 的实际成本(包含失败重试)。单图成本超过 ¥0.25 自动告警,触发降级。

    八、参考资料

    下面 3 个资料是我这次实测的主要参考,链接都在 2026 年 7 月有效:

  • OpenAI 官方文档 – GPT Image 系列 API 字段定义与图像输入规范

  • 阿里云百炼 / DashScope 控制台 – Qwen-Image 2.0 Max 接入指南(国内访问)

  • 字节火山引擎方舟 – Doubao Seedream 5.0 图像生成 API 文档

  • 聚合层的 API 接入和厂商切换实现,我直接照着 炻光 AI 接入管理平台 的统一接口文档把字段映射抄了一遍,实测下来 5 家用同一套调用代码就能跑通,对不想自己写路由层的小团队比较省事。

    九、写在最后

    3 条经验送给要在 2026 年 Q3 上 i2i 的同学:

  • 风格锚定是 i2i 的核心,不要拿 strength 当万能旋钮。挑一家风格锚定强的厂商当主力(Qwen-Image 2.0 Max / Doubao Seedream 5.0 二选一),兜底再上一个,别贪多。我自己第一版贪心把 5 家全接进路由,结果参数调成鬼样,后来只留双主力反而稳。

  • 多图融合别指望单 API 解决。要做 14 图融合那种 Midjourney 级效果,要么叠 ControlNet,要么走 Photoshop 预处理。这是 5 家 API 的共同短板,认清楚这点能少走 2 周弯路。

  • 中文 prompt 兼容性比想象中更重要。同样的"宋代汝窑",Qwen / Doubao 能给你汝窑,Gemini 给你青花瓷,这种文化断代错误比色调漂移更致命,前期选型必须实测,别只看 demo。

  • 最后一句,i2i 这波 2026 年 Q3 的进化速度比 2025 年快多了,现在不上车,半年后你就会发现手里那套纯文生图 + 后期调色的工作流彻底过时。先把双厂商兜底跑通,再考虑叠 ControlNet 做多图融合——这是我帮朋友做完 12 个 SKU 之后最确定的两件事。

    赞(0)
    未经允许不得转载:171主机测评 » 图生图风格锚定屠夫榜:5 家生图 API图生图实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址