一张商品图放进首页横幅,商品占满了画面,标题没地方放。换成竖版海报,直接裁切又把提手切掉了。

拿箱包宣传图举例,同一个商品至少有两种不同的版式需求:横幅把商品放在一侧,给标题和按钮留位置;竖版需要重新安排商品高度,顶部也要留出文案区。只改图片尺寸,构图未必跟着变。

一张图还能手动调整,换成 20 个商品、每个商品 3 种版式,就要开始算账了:60 张图要花多少钱?生成一直转圈,能不能重新提交?好不容易拿到结果,商品主体却严重变形,这次费用怎么处理?

下面沿着这批电商图的需求,先算价格,再写提示词、上传参考图、接入 Python,最后处理超时和质量异常。示例使用一个支持网页生图和 API 接入的生图服务,该服务公布了超时补偿、严重质量异常赔付规则。
配图来自已有电商物料,下面先看版式,再把需求写成 API 参数。代码和图片的验证范围放在文末。

1. 先选模型,再算这批图要花多少钱

这次使用 gpt-image-2.5-flare。把型号写完整,后面查任务和核对费用时才能知道用的是哪一个版本。

OpenAI 官方的 GPT Image 2.5 Flare 和 Sunburst 按 token 计费,当前 Standard 报价如下。token 是接口统计用量的单位,图片输出也会折算成 token,不是“一张图算一个”。

OpenAI 官方计费项Flare / Sunburst 单价(美元 / 百万 token)
文字输入$5.00
图片输入$8.00
缓存文字输入$1.25
缓存图片输入$2.00
图片输出$30.00

来源:OpenAI 官方价格页,2026 年 9 月 15 日核对。只有符合缓存条件的输入才按缓存价格计费。

生图服务的 GPT Image 2.5 页面按张展示价格:

生图服务型号API 标识支持分辨率单张价格 / 积分60 张预算100 张预算
标准版gpt-image-2.51K / 2K / 4K¥0.06 / 6¥3.60¥6.00
Flaregpt-image-2.5-flare1K / 2K / 4K¥0.12 / 12¥7.20¥12.00
Sunburstgpt-image-2.5-sunburst1K / 2K / 4K¥0.18 / 18¥10.80¥18.00
来源:生图服务 GPT Image 2.5 模型页,同日核对。表内预算按生成张数乘单价计算,未计重复生成,也未减掉可能获得的赔付;提交前再核对所选参数的扣费提示。

注意这里的“标准版”是生图服务的型号名称,不能仅凭这个名字,把它当作 OpenAI 某个官方型号来算折扣。正文明确使用 Flare,避免型号含糊。
以开头的 60 张电商图为例,按生图服务 Flare 的页面价格,生成预算是 7.20 元。官方接口则要看实际 token 用量:假设一张图的输出恰好为 1,000 token,输出部分就是 1000 ÷ 1000000 × 30 = 0.03 美元,再加输入费用。这里的 1,000 是计算演示,不是这张商品图的实测用量。
两边一个按实际用量计算,一个按张展示报价,不能直接用起步价得出统一折扣。 官方相同 token 单价也不代表不同模型、质量和尺寸的单张成本相同。实际选型要固定输入、型号、尺寸和质量,再对照返回用量、扣费与可用图片数量。

批量准备商品图时,可以先用少量图片确认构图,再估算整批费用。反复生成三次才能选中一张,生成预算也得按三次计算。

2. 先确定图片放在哪里

横幅素材:商品居右,左侧安排标题与按钮

已有箱包横幅物料,1920×1080。这里只观察商品位置、文案区域和光线,不将图中的材质宣传语用于其他商品。

这张图的商品在右侧,左侧有连续的空白区域。准备类似横幅时,可以先把需求写成四项:

要确定的内容本文横幅示例
商品来源使用自己的商品参考图,核对外观细节
商品位置右侧约一半画面,主体完整,不贴边
背景和光线浅米色石材背景,左上方柔和侧光
文案位置左侧留白,标题、价格和按钮后期添加

价格、品牌名、促销日期往往会改。这个示例先生成底图,文字交给设计工具或前端叠加,方便后续替换。

提示词可以这样写:

以参考图中的箱包为商品主体,保留包型、颜色、提手、锁扣和缝线等关键外观。
制作一张横向商品宣传底图,商品完整放在画面右侧,四周留出安全边距。
背景使用浅米色石材与暖色墙面,左上方柔和侧光,包底有自然接触阴影。
左侧留出干净、连续的文案区域,不放其他商品或装饰物。
不生成文字、价格、品牌标识、按钮或水印。

“保留外观”是给模型的要求,返回后仍要和原图比对,尤其是提手数量、五金件、走线和品牌标识。

3. 竖版要改构图,比例也要写进参数

竖版素材:商品位于下半部,顶部留给文案

已有护肤品竖版物料,1080×1350,用于观察纵向布局。它与上一张是不同商品,不是同一输入的变体或模型对比。

竖版可以把构图要求改成“商品放在画面下半部,顶部留出标题区,完整保留商品轮廓”。如果只把横图裁成长图,文案区和主体比例很容易一起丢掉。

提示词负责描述摆放,API 参数负责选择接口支持的比例。在本文使用的生图服务接口中,参数叫 aspectRatio;不要把其他工具的 --ar 命令当成它的接口字段。
这里选择 16:9 做横幅示例,3:4 做竖版练习。配图本身是 4:5,不代表当前接口支持这个比例。最终若要适配固定的广告位尺寸,还需要单独排版、留白或裁切,并检查实际文件的像素。

运动鞋横幅素材:深色背景与商品轮廓形成对比

已有运动鞋横幅物料,1200×628。与箱包图相比,背景、灯光和标题风格都变了,商品与文字仍然各有位置。

运动鞋图可以用深色背景强调鞋底和轮廓,但不能直接复用箱包图的材质描述。把商品换掉时,提示词里的主体、材质、背景和摆放也要逐项改;画面中的宣传文字仍需核对后再使用。

4. 把需求整理成一份请求 JSON

开始前:安装 Git 和 Python 3.10+,确认终端中的 python --version 能显示正确版本,再克隆示例仓库。

git clone 示例仓库地址
cd imgapi-image-generation

**复制 JSON 前:先完成上面的克隆命令,并进入 imgapi-image-generation 仓库根目录。**复制 JSON 前:先完成上面的克隆命令,并进入 imgapi-image-generation 仓库根目录。

把下面内容保存为仓库中的 examples/csdn25-banner.json,使用 UTF-8 编码:

{
  "model": "gpt-image-2.5-flare",
  "prompt": "以参考图中的箱包为主体,保留包型、颜色、提手、锁扣和缝线等关键外观。制作横向商品宣传底图,商品完整放在右侧,四周保留安全边距。浅米色石材与暖色墙面,左上方柔和侧光,包底有自然接触阴影。左侧留出干净的文案区域。不生成文字、价格、品牌标识、按钮、水印或其他商品。",
  "aspectRatio": "16:9",
  "quality": "auto",
  "resolution": "1K",
  "urls": [],
  "files": ["./reference.png"]
}

把自己有权使用的商品原图放在仓库根目录,命名为 reference.png。这里需要的是实际 PNG 文件,不能只把 JPG 的扩展名改成 PNG;使用 JPG 时,也可以保留原文件名并修改 files。

两种参考图传法不要混用含义:

  • files 填本地路径,客户端会读取文件,以 multipart 方式上传。相对路径按运行命令时的目录解析。
  • urls 填服务端可访问的 HTTPS 图片地址。不要往这里塞本地磁盘路径或 Base64 字符串。

简单说,files 是让程序读取你电脑硬盘里的图,再把图片文件上传过去;urls 是给接口一个它能访问的图片链接,由服务端去取图。C:\图片\商品.png 这样的本地路径只能放进 files,放进 urls 后,服务端找不到你电脑上的文件。

multipart/form-data 可以理解成一个同时装着参数和图片文件的包。示例客户端负责打包,你不需要手写它的格式。

本例走生图服务的接口协议,提交路径为 /prod-api/tool/imgapi/draw/Async,不能只替换 OpenAI SDK 的 base_url 就照搬其他教程。

5. 先预览请求,再决定是否提交生成

运行前:确认 Python 已安装、仓库已克隆、终端位于仓库根目录,并已保存 examples/csdn25-banner.json。此步不需要 Key,也不消耗积分。

运行:

python python/run.py --dry-run --request examples/csdn25-banner.json

输出包含:

{
  "mode": "dry-run",
  "network": false,
  "endpoint": "https://imgapi.vip/prod-api/tool/imgapi/draw/Async",
  "contentType": "multipart/form-data"
}

这是实际离线输出中的部分字段。看到 multipart/form-data,说明这份请求选择了本地参考图路径。预览不会读取、上传图片,也不会验证模型最终是否接受这些参数,所以还要自己确认参考图存在、内容正确。

真实提交前:准备有效 Key、可用积分,以及请求里指定的参考图文件。下面最后一条命令会产生实际生成费用。

准备真实调用时,安装依赖,并在本地终端或服务端运行环境中配置 IMGAPI_CARD_KEY。不要把 Key 放进请求 JSON、前端代码或公开仓库。

python -m pip install -r python/requirements.txt
python python/run.py --request examples/csdn25-banner.json

第二条命令会上传参考图并提交一次真实生成,按服务规则消耗积分。本稿只验证了前面的离线预览,没有执行这一步。

6. 等待中断,先查原任务

异步请求就像去餐厅点餐:提交成功后拿到一个号牌,也就是任务 ID。后面凭号牌查进度、取结果,不必一直守着同一个请求等。网络中断后,只要任务 ID 已保存、原任务仍可查询,就继续凭原 ID 查;不要把查询失败当成没下过单,再提交一次。

示例拿到异步任务 ID 后,会写入当前目录的 task-id.txt。成功时输出任务 ID 和图片 URL。

如果中途网络断开,但已经拿到任务 ID,就用原 ID 继续查询:

python python/run.py --query YOUR_TASK_ID

这里的 YOUR_TASK_ID 要替换为那一笔任务的真实 ID。不要把“查询失败”直接当成“生成失败”,马上再执行一次提交命令。

还有两个边界:

  1. 如果提交响应丢失、连任务 ID 都没拿到,先核对控制台任务记录,不能靠盲目重试判断是否提交成功。
  2. task-id.txt 只保存最近一次写入的 ID。处理多个商品时,要按业务记录保存各自的 ID;这个单任务示例不适合直接并发运行后共用同一个文件。

拿到图片 URL 后及时下载,链接可能有保存期限。下载文件名应与真实格式对应,下载操作本身不会把 JPEG 转成 PNG。

7. 已经扣了积分,等太久怎么办

假设这批图片中有一张,提交成功后等了 4 分钟才出结果。图能用,但等待时间已经超过了预期。生图服务对这种情况公布了具体的积分补偿标准。
超时与失败补偿规则
用户提供的官网规则截图,表内条件已与 2026 年 9 月 15 日的在线细则核对。

服务端任务耗时或结果处理方式假设本次实付 10 积分
不超过 180 秒不触发超时补偿无超时补偿
超过 180 秒,且不超过 300 秒补偿实付积分的 20%补 2 积分
超过 300 秒补偿实付积分的 100%补 10 积分
生成失败、没有返回图片,或首次交付无法打开退回未完成部分的积分若整笔未完成,退回 10 积分

这里的时间从服务端接受任务开始,算到服务端第一次拿到最终结果。浏览器转圈、下载缓慢、自己过了一会儿才打开页面,都不能直接当成这笔任务的生成耗时。

因此,240 秒出图和 320 秒出图,对应的补偿不同;正好 300 秒仍属于 20% 这一档。是否触发由系统按服务端记录判断,超时无需另交证明。按当前细则,达到标准的超时补偿在次日上午 10 点发放,明确失败按任务结算状态退回,状态不明确时进入人工核对。

这也解释了为什么上一节要保存任务 ID:页面请求超时后先查询原任务,可以继续追踪原来的生成与结算。补偿规则本身并不能替代应用里的防重复提交逻辑。

8. 图片出了,商品却严重变形,质量赔付怎么走

另一种情况更难处理:任务已经成功,返回链接也能打开,但图里的商品主体严重变形,整张图基本没法用。

生图服务将这类问题单独列为严重质量异常,经人工审核确认后,按异常图片对应实付积分的 150% 补偿。一笔对应 10 积分的异常图片,审核通过后补 15 积分。
赔付保障:超时自动判断,质量异常人工审核
官网保障说明的已有截图。质量赔付需核对任务输入、参数与输出,不是所有不满意都自动赔付。

放到电商图场景里,可以这样判断是否需要提交质量工单:

遇到的问题按公开细则如何处理
明确要求箱包为主体,结果箱包完全缺失属于细则列出的严重异常类型,可提交审核
商品大面积破损或严重变形,基本无法使用可提交审核,需对照输入与结果确认
返回的尺寸、比例、数量或模型与订单参数不符可提交审核,保留订单参数与原始文件
只是觉得光影不够高级、颜色不够喜欢通常不属于质量赔付
提示词前后矛盾、参考图本身打不开通常不属于质量赔付
轻微瑕疵,或已说明的复杂文字、高度一致性等能力限制通常不属于质量赔付

发现严重异常后,通过生图服务赔付保障页的客服渠道提交任务 ID 和简要说明。系统仍在有效期内保存的参数无需重复上传;审核人员会核对提示词、参考图、生成参数和最终结果。对第一次结果有异议,可以申请一次复核。
问题说明可以写得具体一点:

任务 ID:填写本次真实任务 ID
订单要求:参考图中的箱包是主体,要求完整展示商品
实际问题:输出中主体大面积破损,无法用于商品展示
核对材料:本次提示词、参考图、订单参数和返回原图

上面是工单填写示例,不是真实赔付案例。如果只是包扣细节变化,需要结合变化程度、提示词和已说明的模型能力判断,不能提前保证通过。

还有两处容易误解:赔付发的是积分,不是现金;同一任务只按最高标准补偿一次。 比如同一笔 10 积分任务既超过 300 秒,又经审核确认严重质量异常,最高补 15 积分,不是把 10 和 15 加成 25,也不是先退 10 再额外补 15。

保障覆盖能够确认归属、有任务 ID、实际扣过积分的任务,游客积分、赠送积分和充值积分都按本次实际扣除量计算。首次交付无法打开也有保存期限制,超过保存期才回来下载导致的失效,不在这一项里。

这两种保障分别回答了用 API 做图时的两个问题:等待超过标准,按什么补;结果出现严重客观异常,拿什么证据申请处理。具体边界以生图服务现行赔付细则为准,本文未验证实际到账。

9. 图片能打开,还要过一次商品检查

把生成图和商品原图放在一起,先看这几项:

  • 外观:包型、提手、扣件、颜色、缝线是否发生了明显变化。
  • 版式:预留位置能不能放下真实标题,移动端裁切会不会切到商品。
  • 文件:实际比例和像素是否适合投放位置,不能只看请求里写了什么。
  • 商品信息:后加的价格、材质、功效等文案是否与实际商品一致。

先拿一个商品做完整:在网页上确认参考图和构图,再把参数放进请求文件;接 API 后保存任务 ID,拿到结果就下载、检查。等这一张符合投放要求,再扩展到剩下的商品。

如果接入示例对你有帮助,欢迎到 GitHub 点个 Star。你在对接 AI 生图 API 时,遇到过哪些超时或并发问题?可以在评论区说说当时怎么处理,贴代码时记得去掉 Key 和私人任务信息。

本文验证范围

本文两份 GPT Image 2.5 Flare 请求已完成 --dry-run 离线预览,确认模型字段、横竖比例和本地文件上传路径对应的请求类型;未执行付费生成,也未测试赔付到账。5 张配图是已有商品素材与规则截图,不能作为本文代码的实测输出。

公开示例一次提交一个任务,拿到 ID 后保存并继续查询,不自动重复提交。它没有实现批量队列、并发调度或服务端扣费幂等,不能保证所有超时场景都不会重复扣费;提交结果不明时仍需核对原任务。

如果接入示例对你有帮助,欢迎到 GitHub 点个 Star。你在对接 AI 生图 API 时,遇到过哪些超时或并发问题?可以在评论区说说当时怎么处理,贴代码时记得去掉 Key 和私人任务信息。

本文验证范围

本文两份 GPT Image 2.5 Flare 请求已完成 --dry-run 离线预览,确认模型字段、横竖比例和本地文件上传路径对应的请求类型;未执行付费生成,也未测试赔付到账。5 张配图是已有商品素材与规则截图,不能作为本文代码的实测输出。

公开示例一次提交一个任务,拿到 ID 后保存并继续查询,不自动重复提交。它没有实现批量队列、并发调度或服务端扣费幂等,不能保证所有超时场景都不会重复扣费;提交结果不明时仍需核对原任务。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐