最近看生图模型价格,很容易掉进一个坑。
很多表都会写“某某模型 ¥0.2/张,某某模型 ¥0.5/张”。看起来很清楚,真拿去做预算时才发现,这两张图可能根本不是同一种东西。一个是精确 size=1024x1024,一个是 size=1K + aspect_ratio=1:1,还有一个最低方图直接从 2048×2048 起步。
还有一层更隐蔽。有些生图模型按张计费,有些模型按 token 或内部用量计费。最后你当然也能折成“这次调用花了多少钱”,但折算前提不一样,不能直接拿官方价格表里的单位硬拼。
都叫方图,价格就能放在一起吗?
我这次主要想把这件事讲清楚。本文只看两个更工程化的问题:文生图和图生图分别怎么传尺寸请求参数,以及同一口径下单次调用到底多少钱。
先说明一个容易误会的名字:文中写的 gpt-image-2(low)、gpt-image-2(medium)、gpt-image-2(high),不是三个模型 ID。它们都是同一个模型 gpt-image-2,只是调用时分别传了 quality=low、quality=medium、quality=high。
这轮调用都走同一套 NoneLinear API。好处是模型虽然来自不同厂商,请求参数、返回结果和实际调用费用都能放到同一个口径下核对。做多模型接入时,这件事比想象中省心。
先说结论
如果只看“单张价格”,结论会很乱。更稳的做法是先把模型分成三组。
- 固定 1024×1024 size 参数组:请求里明确传
size=1024x1024或size=1024*1024。这组最适合做固定尺寸预算。 - 实测等效 1024 组:模型不支持精确像素,只能传
size=1K + aspect_ratio=1:1、aspect_ratio=1:1,或者默认跟随参考图。本轮输出图片尺寸按 1024×1024 记录。 - 最低原生方图/非 1024 组:模型的最低方图就是 1280、1328、1440、2048 等更大尺寸。这组不能和 1024 方图直接裸比价格。
这三个口径分清以后,很多看起来矛盾的价格就能解释了。
比如 Doubao-Seedream-5.0-lite 文生图本轮是 ¥0.220000/次,看起来比一些 1024 模型还便宜。但它跑的是 2048×2048,不是 1024×1024。你如果要大图,它很值得看;你如果要批量低成本 1024 缩略图,就不能直接拿它和 gpt-image-2(low) 比。
这轮价格怎么统计
文生图和图生图分开统计。
文生图使用同一个中文 prompt:一只红色陶瓷马克杯,纯白摄影棚背景,真实产品摄影,不要文字、标志或水印。
图生图使用同一张 1024×1024 红色陶瓷马克杯做参考图,编辑要求也很窄:主体、背景、光照、构图都不变,只在杯口外沿加一圈细窄金色装饰线。
表格里有三列需要先解释清楚:
尺寸请求参数:只保留尺寸控制相关的真实请求字段名,比如size=1024x1024、size=1K;aspect_ratio=1:1。输出图片尺寸:记录本文对比口径下的输出方图尺寸。参考图参数名:只在图生图表格里出现,表示参考图 URL 放在请求体里的哪个字段,比如image或image_ref。
每个配置只跑一次,所以这篇文章回答的是“单次调用在这个口径下多少钱”,不是长期价格稳定性,也不是模型质量排名。
文生图:固定 1024 方图,谁的价格更清楚

固定 1024×1024 size 参数组里,本轮统计到 21 个成功配置。下表中的单次费用来自本次实际调用记录,统一按人民币/次呈现。
这组回答的问题很直接:如果请求里明确写 1024 方图,单次大概多少钱。
代表价格如下:
gpt-image-2(low):¥0.044296/次cogview-4/cogview-4-250304:¥0.060000/次step-2x-large:¥0.100000/次wan2.2-t2i-flash/wanx2.1-t2i-turbo:¥0.140000/次wanx-v1:¥0.160000/次qwen-image-2.0、wan2.7-image:¥0.200000/次qwen-image-3.0-pro:¥0.250000/次doubao-seedream-5-0-pro-260628:¥0.300000/次gpt-image-2(medium):¥0.371896/次qwen-image-2.0-pro、wan2.7-image-pro:¥0.500000/次gpt-image-2(high):¥1.478176/次
这里最容易看出同一个模型不同档位的成本差。gpt-image-2(low) 和 gpt-image-2(medium) 都是 1024 方图,但价格从 ¥0.044296 到 ¥0.371896,差了 8 倍多。high 更高,到了 ¥1.478176/次。
所以如果只是批量试方向,low 的成本很友好;如果要稳定出正式图,medium 或 high 也许有必要,但预算要先算清楚。
文生图:实测 1024,不等于精确 1024 参数

有些模型并不让你直接写 size=1024x1024。它们可能让你写 size=1K 和 aspect_ratio=1:1,或者只写 aspect_ratio=1:1。
本轮这类配置里,有 8 个输出图片尺寸按 1024×1024 记录:
minimax-image-01:¥0.025000/次minimax-image-01-live:¥0.025000/次imagen-4.0-fast-generate-001:¥0.140000/次imagen-4.0-generate-001:¥0.280000/次- Nano Banana(
gemini-2.5-flash-image):¥0.280083/次 imagen-4.0-ultra-generate-001:¥0.420000/次- Nano Banana 2(
gemini-3.1-flash-image-preview):¥0.644768/次 - Nano Banana Pro(
gemini-3-pro-image-preview):¥1.013586/次
这组模型当然可以产出 1024 方图。但在预算表里,我不建议把它们和精确 size=1024x1024 混成一组。
原因很简单:一个是像素级 size 参数,一个是 size 档位或 aspect_ratio 参数。单次尺寸结果一样,不代表长期尺寸控制方式一样。做批量任务时,这个区别会影响后续裁切、缓存、计费归因和结果复查。
文生图:最低原生方图,单独看才公平

还有一些模型,本来就不是 1024 方图起步。
比如:
glm-image:1280×1280,¥0.100000/次wan2.5-t2i-preview:1280×1280,¥0.200000/次wan2.6-t2i:1280×1280,¥0.200000/次qwen-image-plus:1328×1328,¥0.200000/次Qwen-Image:1328×1328,¥0.300000/次qwen-image-max:1328×1328,¥0.500000/次viduq2:1440×1440,¥0.500000/次Doubao-Seedream-5.0-lite:2048×2048,¥0.220000/次doubao-seedream-4-5-251128:2048×2048,¥0.250000/次uni-1:2048×2048,¥0.280000/次uni-1-max:2048×2048,¥0.700000/次
这组里有些模型看起来很便宜,比如 Doubao-Seedream-5.0-lite 的 2048×2048 是 ¥0.220000/次。要是你需要大图,它的单次价格很有吸引力。
但如果你的业务只需要 1024 方图,再拿它和 gpt-image-2(low) 的 ¥0.044296/次比较,就不是同一道题了。
价格不是孤立数字,前面一定要带尺寸。
图生图:固定 1024×1024 size 参数组

图生图这轮记录了 40 个配置。固定 1024×1024 size 参数组有 14 个。
代表价格如下:
wanx-v1:¥0.160000/次doubao-seedream-4-0-250828:¥0.200000/次qwen-image-2.0:¥0.200000/次qwen-image-edit-plus:¥0.200000/次wan2.5-i2i-preview:¥0.200000/次wan2.7-image:¥0.200000/次qwen-image-3.0-pro:¥0.270000/次doubao-seedream-5-0-pro-260628:¥0.300000/次gpt-image-2(medium):¥0.430528/次qwen-image-2.0-pro:¥0.500000/次qwen-image-edit-max:¥0.500000/次wan2.7-image-pro:¥0.500000/次gpt-image-2(low):¥0.109858/次gpt-image-2(high):¥1.790488/次
图生图:实测等效 1024 组

图生图里,也有一组不是精确 size 参数,但输出图片尺寸按 1024×1024 记录。
代表价格如下:
minimax-image-01:¥0.025000/次minimax-image-01-live:¥0.025000/次wanx2.1-imageedit:¥0.140000/次- Nano Banana(
gemini-2.5-flash-image):¥0.280681/次 Qwen-Image-Edit:¥0.300000/次- Nano Banana 2(
gemini-3.1-flash-image-preview):¥0.577636/次 - Nano Banana Pro(
gemini-3-pro-image-preview):¥1.048572/次
这组适合做一次性评估,也适合放进候选池。但如果你准备长期批量跑图生图,我会先连续跑几次,确认输出图片尺寸是不是稳定在 1024×1024。
图生图比文生图更容易受参考图影响。参考图尺寸、内容复杂度、参考图参数名是 image 还是 image_ref,都有可能影响输出和成本记录。
图生图:最低原生方图/非 1024 组

图生图的大图组也不能丢。
这一组里:
wan2.6-image:1280×1280,¥0.200000/次viduq2:1440×1440,¥0.500000/次viduq1:1440×1440,¥0.625000/次flux.2-klein-4b:1920×1920,¥0.100000/次flux.2-flex:1920×1920,¥0.420000/次Doubao-Seedream-5.0-lite:2048×2048,¥0.220000/次doubao-seedream-4-5-251128:2048×2048,¥0.250000/次uni-1:2048×2048,¥0.280000/次uni-1-edit:2048×2048,¥0.280000/次flux.2-max:2048×2048,¥0.500000/次uni-1-max:2048×2048,¥0.700000/次
如果你做的是商品主图、海报底图、后续还要裁切的大图,这组很有价值。尤其是一些 2048 方图,单次价格不一定高。
但它们仍然不能和 1024 固定尺寸榜直接裸比。尺寸差了 4 倍像素,业务用途也可能完全不同。
这组价格表该怎么用
我的建议很简单。
如果你做头像、缩略图、批量草图,先看固定 1024×1024 size 参数组。这里的价格最容易写进预算,也最容易复现。
如果你做海报、商品图、主视觉,最低原生方图组反而要认真看。2048 方图单次贵一点,可能比后面再放大、再修图更省事。
如果你做图生图编辑,先看模型是否支持精确 size=1024x1024。支持精确 size 的模型,预算更好控;只支持 aspect_ratio 或尺寸档位的模型,先跑几次,把输出图片尺寸记下来。
最后还有一个小经验:不要把文生图和图生图混在一张总价表里。参考图输入会改变请求体,也可能改变服务端计费和输出结果。
复现脚本
下面这个脚本只保留最小逻辑:同一个入口,跑几条文生图和图生图请求,打印状态码、接口返回成本和图片 URL。实际使用时,把 JOBS 改成你要验证的模型即可。
import json
import urllib.error
import urllib.request
API_KEY = "替换成你的 NoneLinear API Key"
ENDPOINT = "https://api.nonelinear.com/v1/images/generations"
T2I_PROMPT = "一只红色陶瓷马克杯居中放在纯白色摄影棚背景前,真实产品摄影,不要文字、标志或水印。"
I2I_PROMPT = "保持参考图主体、背景、光照和正方形构图不变,只在杯口增加一圈细窄金色装饰线。"
REF_IMAGE = "https://imagen-nonelinear-2025.tos-cn-beijing.volces.com/others/dd156e978d5f47b6b054246b33700278-0.png"
JOBS = [
{"name": "gpt-low-t2i", "model": "gpt-image-2", "prompt": T2I_PROMPT, "size": "1024x1024", "quality": "low"},
{"name": "qwen-t2i", "model": "qwen-image-2.0", "prompt": T2I_PROMPT, "size": "1024*1024"},
{"name": "nano-banana-2-t2i", "model": "gemini-3.1-flash-image-preview", "prompt": T2I_PROMPT, "size": "1K", "aspect_ratio": "1:1"},
{"name": "seedream-t2i", "model": "doubao-seedream-5-0-pro-260628", "prompt": T2I_PROMPT, "size": "1024x1024", "watermark": False},
{"name": "gpt-low-i2i", "model": "gpt-image-2", "prompt": I2I_PROMPT, "image": REF_IMAGE, "size": "1024x1024", "quality": "low"},
{"name": "qwen-i2i", "model": "qwen-image-2.0", "prompt": I2I_PROMPT, "image": REF_IMAGE, "size": "1024*1024"},
]
def call_image_api(job):
payload = {"response_format": "url", "n": 1, **job}
name = payload.pop("name")
req = urllib.request.Request(
ENDPOINT,
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
method="POST",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
},
)
try:
with urllib.request.urlopen(req, timeout=900) as resp:
status, raw = resp.status, resp.read()
except urllib.error.HTTPError as exc:
status, raw = exc.code, exc.read()
body = json.loads(raw.decode("utf-8", errors="replace"))
image_url = (body.get("data") or [{}])[0].get("url")
cost = (body.get("usage") or {}).get("cost")
print(name, status, "cost=", cost, "url=", image_url)
for job in JOBS:
call_image_api(job)复现时记住三件事:文生图和图生图分开统计;精确 size=1024x1024、size=1K + aspect_ratio=1:1、仅 aspect_ratio=1:1 分开记录。