本系列前四篇都在解决"看图":图片怎么编码送进模型、图表数字能不能信、UI 截图怎么变成点击坐标。输入侧打通之后,自然轮到输出侧——让 API 替你画图。2026 年的图像生成 API 已经从演示玩具变成了基础设施:博客封面、应用占位图、营销素材批量出图,都是一次 HTTP 请求的事。但"能出图"与"出能用的图"之间,隔着模型选型、提示词写法、参数与复现、质量评估四道坎。本文按"格局 → OpenAI → FLUX → 提示词 → 参数 → 封面生成器实战 → 质量评估"组织,代码均可直接跑通。
1、图像生成 API 格局
当下的图像生成 API 分两类,定位差异比价格差异更值得先看清。第一类是对话模型画图:GPT-Image 与 Gemini 原生出图,模型本质是多模态对话模型,图像只是它的另一种"回答",因此天然擅长理解长指令、参考多张输入图、在图内渲染文字。第二类是专用文生图:以 FLUX 为代表,模型只做"文本到图像"一件事,出图快、单张便宜、风格化质量高,控制参数齐全。
先把 2026 年 10 月的牌桌清一遍。OpenAI 的 DALL·E 2 与 DALL·E 3 已于 2026 年 5 月 12 日从 API 下线,现役是 gpt-image 家族:主力 gpt-image-1.5、上一代 gpt-image-1、低价档 gpt-image-1-mini。Google 的 Imagen 4 独立模型也在 2026 年 8 月 17 日从 Gemini API 退场,图像生成并入 Gemini 对话模型原生出图。Black Forest Labs 的 FLUX 走官方 API 加第三方托管双通道,是专用文生图的事实标准。Stability 在 SD 3.5 之后重心转向企业与视频,开放 API 声量渐弱,本文不再展开。
| 维度 | 对话模型画图 | 专用文生图 |
|---|---|---|
| 代表模型 | GPT-Image、Gemini 出图 | FLUX.2 系 |
| 指令遵循 | 强,可写长指令 | 弱,偏关键词短语 |
| 图内文字 | 可用,偶有错字 | 基本不可用 |
| 速度与单价 | 慢,贵一档 | 快,便宜 |
| 可复现性 | 无 seed,难复现 |
seed 固定,可复现 |
| 改图与多图输入 | 原生支持 | 多数不支持 |
两类不是替代关系,而是分工:批量探图、风格化底图交给 FLUX;带文字的成图、参考图改图交给 GPT-Image。后文的封面生成器会用到这条分工线。
2、OpenAI 生成与编辑
2.1、生成调用与计费
gpt-image 走 /v1/images/generations 与 /v1/images/edits 两个端点,参数细节见官方图像指南。基础生成如下:
# gen_basic.py —— gpt-image-1.5 基础生成
import base64
from openai import OpenAI
client = OpenAI() # OPENAI_API_KEY 走环境变量
r = client.images.generate(
model="gpt-image-1.5", # 现役主力;批量跑量可换 mini
prompt="极简科技风横幅:深蓝背景上,数据流从四周汇聚成一张发光的"
"神经网络,左下角留白,无文字",
size="1536x1024", # 横幅;另有 1024 方图与竖图
quality="medium", # low/medium/high 三档
n=1,
)
img = base64.b64decode(r.data[0].b64_json) # gpt-image 返回 base64 而非 URL
with open("banner.png", "wb") as f:
f.write(img)
返回走 b64_json 而不是 URL,是 gpt-image 与老 DALL·E 接口的一个可见差异,取图后自行落盘或直传对象存储。计费按"尺寸 × 质量档"每张一口价:gpt-image-1.5 的 1024×1024 在 low/medium/high 三档约为 $0.009/$0.034/$0.133(约合 0.06/0.24/0.95 元),上一代 gpt-image-1 约 $0.02/$0.07/$0.19,gpt-image-1-mini 低至约 $0.005,横向与竖向尺寸另有对应价格,以定价页为准。
一个容易误会的参数是 quality:它控制的是细节保真度而非分辨率,三档输出的像素尺寸完全相同,low 档牺牲的是纹理与文字清晰度。封面这类要看清细节的场景用 medium 起步,纯氛围底图 low 档就够。
2.2、多图输入改图
images.edit 是 GPT-Image 相对专用文生图最大的差异点:把多张输入图与一段自然语言指令一起送去,模型理解后再重绘。两张图合成的调用如下:
# edit_merge.py —— 底图 + 风格参考图改绘
from openai import OpenAI
client = OpenAI()
r = client.images.edit(
model="gpt-image-1.5",
image=[open("screenshot.png", "rb"), # 底图:应用 UI 截图
open("style.png", "rb")], # 参考图:目标视觉风格
prompt="把第一张截图重绘成第二张图的暖色手绘插画风,"
"保持界面元素布局不变,去掉截图里的系统状态栏",
size="1536x1024",
)
这段代码完成的是"以图改图":底图提供结构,参考图提供风格,指令负责说清谁跟谁。编辑与生成是同一套计费口径,按尺寸与质量档计价,输入图片会额外折算少量 token。老接口的蒙版式局部重画也还保留,但多图加自然语言的路线明显更省事——前提是你接受模型对"布局不变"的执行是近似而非像素级。
3、FLUX 托管 API 调用
FLUX 的获取渠道有三类:BFL 官方 API、fal 与 Replicate 这类托管平台。模型同源,价格接近,选谁主要看账号与账单便利。这里用 BFL 官方 REST 讲格式,它是异步任务制:提交拿轮询地址,轮询到 Ready 再下载。
# flux_gen.py —— BFL 官方 API:提交任务并轮询取图
import os, time, requests
KEY = {"x-key": os.environ["BFL_KEY"]} # 鉴权走 x-key 请求头
def flux(prompt: str, path: str, seed: int = 42):
r = requests.post("https://api.bfl.ai/v1/flux-2-pro",
headers=KEY, timeout=30,
json={"prompt": prompt, "width": 1280,
"height": 720, "seed": seed}) # 同 seed 可复现
task = r.json() # 返回任务 id 与 polling_url
while True:
s = requests.get(task["polling_url"], headers=KEY).json()
if s["status"] == "Ready":
break
time.sleep(1) # Requesting/Processing 阶段等待
url = s["result"]["sample"] # 成品图下载地址
open(path, "wb").write(requests.get(url).content)
异步轮询是专用文生图 API 的常见形态,托管平台通常把这一步包进 SDK,一个同步调用拿图。模型 ID 与返回字段以所选平台文档为准,各家有细微差异。版本选择上,FLUX.2 系分 flex、pro、max 三档:flex 快而便宜,适合批量探图;pro 是质量与价格的平衡点;max 是质量顶配。计价按百万像素(MP)算,首 MP 约 $0.03~$0.06,尺寸翻倍价格翻倍。上一代 FLUX 1.1 Pro Ultra 固定输出 4MP,约 $0.06 一张,大尺寸定稿依然能打。工程节奏建议固定为两段:flex 批量出草稿人选方向,pro 或 max 出定稿,成本能压到一段式的一半以下。
4、图像提示词四要素
图像提示词的结构化程度直接决定出图稳定性,可用四要素法约束:主体(画什么)、风格(什么媒介与画风)、构图(视角与布局)、光照(光感与氛围)。四个槽位填满,模型自由发挥的空间就从"瞎猜"收敛到"微调"。正反例如下:
| 提示词 | 诊断 |
|---|---|
| 一张好看的科技博客封面 | 全是形容词,四个要素全空,每次结果随机 |
| 一只机器人,未来感,高清,4K | 主体有了,风格构图光照仍空,"高清 4K"是无效词 |
| 等距 3D 插画:一只机械手托起发光的芯片;主体居右占三分之二,左侧纯色留白;柔和顶光,浅景深 | 四要素齐备,可直接投产 |
三条经验比模板本身更重要。主体先行:把最想看见的名词放在句首,权重最高。名词具体化:用"等距 3D 插画""双色扁平几何"点名媒介,比堆"未来感、高级感"这类评价词有效得多。构图要留白:给后期叠字、贴 logo 留出纯色区域,是封面类需求最常被漏写的一条。
另一个高频问题是负面提示:FLUX 与 GPT-Image 都没有 negative_prompt 参数,排除项要写进正向描述——"纯色背景,无文字,无水印"这样陈述,而不是另开一个字段。此外两类的提示词口味不同:GPT-Image 吃长指令,可以写清因果与约束;FLUX 偏短语并列,长句反而稀释重点。
5、参数工程与可复现
两类 API 的常用参数面如下,差异点集中在尺寸与 seed:
| 参数 | OpenAI 取值 | FLUX 取值 | 说明 |
|---|---|---|---|
size |
1024x1024 1536x1024 1024x1536 auto |
自定义宽高(MP 计价) | 封面选横向,FLUX 可直出 16:9 |
quality |
low/medium/high | 以版本档位区分 | OpenAI 控保真非分辨率,价差可达 15 倍 |
n |
1~10 | 通常循环调用 | 单请求多张,失败整体重试 |
seed |
无此参数 | 任意整数 | 固定后同 prompt 像素级复现 |
seed 是可复现性的关键。FLUX 上同 prompt 同 seed 能像素级复现同一张图,调参时只动一个变量、其余冻结,才能确定因果;换 seed 则等价于重掷骰子。OpenAI 没有提供 seed,同 prompt 两次调用结果不同,复现只能靠把当次输出存档。批量场景还要对齐宽高比与用途:OpenAI 封面用 1536×1024(3:2)再裁 16:9,FLUX 直接 1280×720 一步到位。
数量参数上,n=3 与循环调用三次在结果分布上没有本质差别,但单请求多张在部分网关上失败会整体重试,烧钱更狠。生产代码建议按张循环、失败单张重试,账单可控。
6、博客封面生成器实战
目标场景:写完一篇文章,输入标题与关键词,产出三张候选封面,人选一张。工程判断先立住一条:不让模型画标题文字。GPT-Image 的文字渲染虽是同类最强,但每批次仍有错字概率,封面标题错一个字就是废图;更稳的分工是模型只出图并留白,标题由前端或排版工具叠上去。提示词构建如下:
# cover_prompt.py —— 标题与关键词 → 四要素封面提示词
import random
STYLES = ["极简扁平插画,几何色块", "深色科技感,霓虹描边",
"等距 3D 渲染,柔和阴影", "黑白手绘线稿,单色点睛"]
def build_cover_prompt(keywords: list[str]) -> str:
kw = "、".join(keywords[:3])
style = random.choice(STYLES) # 每张候选换一种风格
return (f"16:9 博客封面,主体:与「{kw}」相关的视觉隐喻,"
f"不出现任何文字;风格:{style};"
f"构图:主体居右占三分之二,左侧三分之一纯色留白;"
f"光照:柔和均匀的漫射光,轻微高光")
这段代码就是第 4 节四要素的模板化:风格槽位随机轮换,保证三张候选拉开差异而不是同一张图的三次微扰;留白写死在构图槽位,给标题腾位置。批量生成与落盘如下:
# cover_batch.py —— 批量生成候选封面
import base64, os
from openai import OpenAI
from cover_prompt import build_cover_prompt
client = OpenAI()
def make_candidates(keywords: list[str], n: int = 3, outdir: str = "covers"):
os.makedirs(outdir, exist_ok=True)
for i in range(n): # 按张循环,失败单张重试
r = client.images.generate(
model="gpt-image-1.5",
prompt=build_cover_prompt(keywords),
size="1536x1024", # 3:2 出图,裁 16:9 不伤主体
quality="medium")
path = f"{outdir}/cover-{i}.png"
with open(path, "wb") as f:
f.write(base64.b64decode(r.data[0].b64_json))
print("saved", path)
make_candidates(["多模态", "图像生成", "API"])
跑一次产出三张风格各异的候选,人工挑一张,再以挑中的风格槽位为种子重跑一轮即可定稿。三张 medium 档成本约 $0.1,比外包一张封面便宜两个数量级。若博客封面需求量大,把 STYLES 换成与站点视觉规范绑定的固定三种,产出一致性会显著提升。
7、生成质量评估
生成图"能用"与否,目前仍以人工清单为主,模型自评不可信。清单五条按淘汰顺序排:图内文字是否全对(出现即废);主体是否畸形,重点查手指、眼睛、机械结构;留白位置与占比是否够叠标题;风格与站点既有封面是否协调;尺寸与清晰度是否达到发布要求。前两条是硬门槛,后三条是调优项。
自动化可以辅助但不必替代:用第 3 篇的视觉问答管线对图反问"图中是否出现文字""人物有几根手指",能挡掉最明显的废图,适合无人值守的批量管线。但录用与否,最终决定权留给人。
图能不能用,标准不在模型的评分,在你的发布场景。
8、总结
回顾全文:图像生成 API 分对话模型画图与专用文生图两类,前者胜在指令、文字与改图,后者胜在速度、价格与可复现;OpenAI 侧记住 gpt-image-1.5 的三档质量计价与 images.edit 多图改绘,FLUX 侧记住 flex 探图、pro 定稿的两段节奏;提示词用四要素法填满主体、风格、构图、光照;参数上 FLUX 靠 seed 复现、OpenAI 靠存档兜底。练习如下:
- 挑你下一篇待发的文章,取标题与三个关键词。
- 用第 6 节的生成器跑出三张候选封面,人工挑一张。
- 挑中的那张换到 FLUX 上用同义提示词重出,对比两类模型的风格差异。
- 给挑中的封面写死一个
seed,重跑两次验证像素级复现。
对于内容型开发者,建议先把封面生成器这类"高频、低风险、人选终审"的场景跑顺,再逐步把生成 API 引入产品链路。

