GPT Image 2.5 API 调用教程:Node.js 实现图片生成与编辑
SEO关键词:GPT Image 2.5 API、GPT Image API、GPT Image 2.5 Node.js、OpenAI 图片生成 API、AI 图片生成接口、gpt-image-2.5-sunburst、gpt-image-2.5-flare
文章摘要:本文记录 GPT Image 2.5 API 的实际调用方法,使用 Node.js 演示如何通过 Image API 生成图片,并介绍图片尺寸、质量、格式、透明背景、图片编辑、Responses API 多轮编辑以及流式生成等常见功能。
大家好 这里是「代码简单说」
最近在折腾 GPT Image 2.5,发现它已经不只是网页端直接生成图片这么简单,官方 API 也提供了比较完整的图片生成和编辑能力。 
目前 GPT Image 2.5 提供两个模型:
gpt-image-2.5-sunburstgpt-image-2.5-flare
官方文档给出的定位是:Sunburst 更适合对编辑精度要求较高的场景,Flare 更适合快速、高质量的日常图片生成。
如果只是单次生成或者编辑一张图片,直接使用 Image API 就可以;如果想做类似聊天一样的多轮图片修改,则更适合使用 Responses API。
一、GPT Image 2.5 API 有哪些调用方式
生图接口注册 api.solov.cc/register?af...
目前主要有两套 API。
1. Image API
Image API 比较直接,主要包含:
text
图片生成
↓
POST /v1/images/generations
图片编辑
↓
POST /v1/images/edits
官方将它分成两个能力:
- Generations:根据文字 Prompt 从零生成图片
- Edits:基于已有图片进行修改
如果你的需求就是:
给我一个 Prompt,生成一张图片。
那么 Image API 是最简单的选择。
2. Responses API
Responses API 则更适合复杂工作流。
例如:
text
生成一张猫和水獭的图片
↓
把它变成写实风格
↓
再修改背景
↓
继续调整人物细节
这种多轮操作可以利用 Responses API 的上下文继续编辑图片。
官方文档也明确提到,Responses API 支持多轮图片编辑,并且可以使用 File ID 作为图片输入。
二、准备 OpenAI API
首先准备好 OpenAI API Key。
建议使用环境变量保存:
bash
OPENAI_API_KEY=你的_API_Key
Windows PowerShell 可以:
powershell
$env:OPENAI_API_KEY="你的_API_Key"
Node.js 代码直接读取:
javascript
process.env.OPENAI_API_KEY
不要把 API Key 直接写进前端 Vue、uni-app、React 等浏览器代码中。
如果是前端项目,建议:
text
Vue / uni-app
↓
自己的 Node.js 服务
↓
OpenAI API
↓
返回图片
这样 API Key 不会直接暴露给用户。
三、安装 OpenAI Node.js SDK
创建一个 Node.js 项目:
bash
mkdir gpt-image-demo
cd gpt-image-demo
npm init -y
安装 OpenAI SDK:
bash
npm install openai
然后修改 package.json:
json
{
"type": "module"
}
这样就可以直接使用:
javascript
import OpenAI from "openai";
四、最简单的 GPT Image 2.5 图片生成
先来看最核心的代码。
创建:
text
index.js
写入:
javascript
import OpenAI from "openai";
import fs from "fs";
const openai = new OpenAI();
const prompt = `
A children's book drawing of a veterinarian using a stethoscope
to listen to the heartbeat of a baby otter.
`;
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt
});
const imageBase64 = result.data[0].b64_json;
const imageBuffer = Buffer.from(imageBase64, "base64");
fs.writeFileSync("otter.png", imageBuffer);
console.log("图片生成完成");
运行:
bash
node index.js
最终会在当前目录得到:
text
otter.png
这里最关键的就是:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt
});
官方 Image API 返回的是 Base64 编码的图片数据,可以从:
javascript
result.data[0].b64_json
读取,然后使用 Node.js 的 Buffer 转换成图片文件。
五、设置图片尺寸
GPT Image 2.5 支持自定义图片尺寸。
例如:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt: "一个未来城市的夜景,电影级光影",
size: "1024x1024"
});
常见尺寸:
| 尺寸 | 用途 |
|---|---|
1024x1024 |
正方形图片 |
1536x1024 |
横向图片 |
1024x1536 |
竖向图片 |
GPT Image 2.5 还支持自定义 WIDTHxHEIGHT。
例如:
javascript
size: "1536x864"
不过尺寸需要满足一定限制:
- 宽高必须是
16的倍数 - 长宽比不能超过
3:1 - 单边最大
3840px - 总像素不能超过
8,294,400 - 总像素不能低于
655,360
超过 2560x1440 的分辨率目前属于实验性范围。
六、设置图片质量
GPT Image 2.5 支持:
text
low
medium
high
xhigh
max
auto
例如:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt: "一只坐在窗边的橘猫",
size: "1024x1024",
quality: "high"
});
如果只是快速测试 Prompt,可以:
javascript
quality: "low"
最终素材则可以尝试:
javascript
quality: "high"
或者更高质量档位。
官方文档说明,gpt-image-2.5-sunburst 和 gpt-image-2.5-flare 都增加了 xhigh 和 max 质量选项,默认值为 auto。
七、生成透明背景图片
这个功能对于前端开发其实非常实用。
比如:
text
商品 PNG
Logo
人物抠图
图标
贴纸
游戏素材
电商素材
可以直接设置:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt: "一个可爱的 3D 小机器人,产品展示图",
size: "1024x1024",
background: "transparent",
output_format: "png"
});
然后保存:
javascript
const imageBase64 = result.data[0].b64_json;
fs.writeFileSync(
"robot.png",
Buffer.from(imageBase64, "base64")
);
这里有两个地方需要注意。
透明背景需要:
javascript
background: "transparent"
同时输出格式使用:
javascript
output_format: "png"
或者:
javascript
output_format: "webp"
官方文档明确说明,透明背景需要配合 PNG 或 WebP 输出。
八、输出 JPG / WebP
Image API 默认返回:
text
PNG
也可以指定:
javascript
output_format: "jpeg"
或者:
javascript
output_format: "webp"
例如:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-flare",
prompt: "一辆未来感十足的电动汽车",
size: "1536x1024",
quality: "high",
output_format: "webp"
});
如果使用 JPEG 或 WebP,还可以设置:
javascript
output_compression: 50
压缩范围为:
text
0 - 100
例如:
javascript
output_format: "webp",
output_compression: 50
可以进一步控制图片体积。
九、一次生成多张图片
如果想一次请求生成多张图片,可以使用:
javascript
n
例如:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt: "一个极简风格的科技公司 Logo",
n: 4
});
for (let i = 0; i < result.data.length; i++) {
const imageBase64 = result.data[i].b64_json;
fs.writeFileSync(
`logo-${i + 1}.png`,
Buffer.from(imageBase64, "base64")
);
}
官方文档说明,n 可以让一次请求返回多张图片,默认情况下返回一张。
十、完整封装一个 Node.js 图片生成函数
实际开发中,我更建议封装一下:
javascript
import OpenAI from "openai";
import fs from "fs";
const openai = new OpenAI();
async function generateImage({
prompt,
filename = "output.png",
model = "gpt-image-2.5-sunburst",
size = "1024x1024",
quality = "auto",
background = "auto",
output_format = "png"
}) {
const result = await openai.images.generate({
model,
prompt,
size,
quality,
background,
output_format
});
const imageBase64 = result.data[0].b64_json;
const imageBuffer = Buffer.from(imageBase64, "base64");
fs.writeFileSync(filename, imageBuffer);
return filename;
}
await generateImage({
prompt: "一只穿着宇航服的柴犬,站在月球表面,电影级光影",
filename: "shiba.png",
size: "1024x1024",
quality: "high"
});
以后只需要:
javascript
generateImage({
prompt: "你的 Prompt"
});
就可以生成图片。
十一、使用 gpt-image-2.5-flare
如果主要是快速生成日常图片,可以把模型换成:
javascript
model: "gpt-image-2.5-flare"
例如:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-flare",
prompt: "一杯放在木桌上的咖啡,阳光从窗户照进来",
size: "1024x1024",
quality: "medium"
});
官方目前将两个模型定位为:
text
Sunburst
编辑精度优先
Flare
快速、高质量的日常图片生成
所以可以根据业务场景选择,而不是所有请求都固定使用同一个模型。
十二、使用 Image API 编辑已有图片
除了生成图片,还可以直接编辑已有图片。
例如:
text
原图
↓
上传
↓
Prompt
↓
GPT Image 2.5
↓
修改后的图片
Node.js 示例:
javascript
import fs from "fs";
import OpenAI, { toFile } from "openai";
const client = new OpenAI();
const response = await client.images.edit({
model: "gpt-image-2.5-sunburst",
image: await toFile(
fs.createReadStream("input.png"),
null,
{
type: "image/png"
}
),
prompt: "把背景改成日落海滩,保持主体不变"
});
const imageBase64 = response.data[0].b64_json;
fs.writeFileSync(
"output.png",
Buffer.from(imageBase64, "base64")
);
Image API 的 edits 接口就是用于修改已有图片,也可以通过多个输入图片组合生成新的图片。
十三、使用 Mask 精确修改图片
如果只想修改图片中的一部分,可以使用 Mask。
例如原图:
text
房间 + 游泳池
然后只把游泳池里的一个区域交给模型修改:
text
Mask
↓
指定区域
↓
加入火烈鸟
Node.js:
javascript
import fs from "fs";
import OpenAI, { toFile } from "openai";
const client = new OpenAI();
const response = await client.images.edit({
model: "gpt-image-2.5-sunburst",
image: await toFile(
fs.createReadStream("sunlit_lounge.png"),
null,
{
type: "image/png"
}
),
mask: await toFile(
fs.createReadStream("mask.png"),
null,
{
type: "image/png"
}
),
prompt: "在泳池中加入一只充气火烈鸟"
});
const imageBase64 = response.data[0].b64_json;
fs.writeFileSync(
"lounge-result.png",
Buffer.from(imageBase64, "base64")
);
Mask 有一个容易忽略的要求:
原图片和 Mask 必须使用相同的尺寸和格式,Mask 还必须包含 Alpha 通道。
官方文档给出的示例也是通过 Mask 指定图片中的编辑区域。
十四、Image API 和 Responses API 怎么选
实际开发时可以直接这么理解:
| 使用场景 | 推荐 |
|---|---|
| 单次生成图片 | Image API |
| 单次图片编辑 | Image API |
| 批量生成图片 | Image API |
| 透明背景素材 | Image API |
| 多轮修改图片 | Responses API |
| 图片 + 对话上下文 | Responses API |
| 复杂图片工作流 | Responses API |
| 需要 File ID 管理图片 | Responses API |
官方的建议也非常明确:
单个 Prompt 生成或编辑图片,使用 Image API。
如果需要构建可对话、可持续编辑的 GPT Image 体验,则使用 Responses API。
十五、Responses API 调用 GPT Image 2.5
Responses API 的思路和普通 Image API 有一点区别。
这里不是直接把:
javascript
model: "gpt-image-2.5-sunburst"
作为顶层模型。
而是:
javascript
model: "gpt-6-astra"
然后在:
javascript
tools
里面指定图片生成模型。
例如:
javascript
import OpenAI from "openai";
import fs from "fs";
const openai = new OpenAI();
const response = await openai.responses.create({
model: "gpt-6-astra",
input:
"Generate an image of a gray tabby cat hugging an otter with an orange scarf",
tools: [
{
type: "image_generation",
model: "gpt-image-2.5-sunburst"
}
]
});
const imageData = response.output
.filter(
output => output.type === "image_generation_call"
)
.map(output => output.result);
if (imageData.length > 0) {
fs.writeFileSync(
"cat-and-otter.png",
Buffer.from(imageData[0], "base64")
);
}
这种方式更适合后面的多轮工作流。
十六、Responses API 实现多轮修改
这是 Responses API 比较有意思的地方。
第一次:
javascript
const response = await openai.responses.create({
model: "gpt-6-astra",
input:
"Generate an image of a gray tabby cat hugging an otter with an orange scarf",
tools: [
{
type: "image_generation",
model: "gpt-image-2.5-sunburst"
}
]
});
然后继续:
javascript
const response2 = await openai.responses.create({
model: "gpt-6-astra",
previous_response_id: response.id,
input: "Now make it look realistic",
tools: [
{
type: "image_generation",
model: "gpt-image-2.5-sunburst"
}
]
});
这样就可以形成:
text
第一次
生成猫和水獭
↓
第二次
改成写实风格
↓
第三次
修改背景
↓
第四次
调整颜色
官方文档支持通过 previous_response_id 继续多轮图片生成和编辑。
十七、流式生成图片
如果图片生成时间比较长,还可以使用 Streaming。
例如:
javascript
const stream = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt:
"A gorgeous winter landscape with a river made of white owl feathers",
stream: true,
partial_images: 2
});
for await (const event of stream) {
if (event.type === "image_generation.partial_image") {
const index = event.partial_image_index;
const imageBuffer = Buffer.from(
event.b64_json,
"base64"
);
fs.writeFileSync(
`partial-${index}.png`,
imageBuffer
);
console.log(`收到第 ${index} 张预览图`);
}
}
partial_images 可以设置为:
text
0
1
2
3
设置为 0 时只接收最终图片。
如果设置大于 0,API 会在生成过程中提供部分图片,用来实现更有交互感的生成体验。
不过如果最终图片生成得非常快,也可能实际收到的预览图数量少于请求数量。
十八、一个完整的 API 服务写法
如果准备把 GPT Image 2.5 接入自己的 Vue 项目,可以再往前走一步。
例如使用 Express:
javascript
import express from "express";
import OpenAI from "openai";
const app = express();
app.use(express.json());
const openai = new OpenAI();
app.post("/api/image", async (req, res) => {
try {
const { prompt } = req.body;
if (!prompt) {
return res.status(400).json({
message: "prompt不能为空"
});
}
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt,
size: "1024x1024",
quality: "high"
});
res.json({
success: true,
image: result.data[0].b64_json
});
} catch (error) {
console.error(error);
res.status(500).json({
success: false,
message: error.message
});
}
});
app.listen(3000, () => {
console.log("API server running at http://localhost:3000");
});
前端 Vue 再调用:
javascript
const res = await axios.post("/api/image", {
prompt: "一个未来城市的夜景"
});
然后:
javascript
const imageUrl =
`data:image/png;base64,${res.data.image}`;
就可以直接显示:
html
<img src="imageUrl" />
这样基本就是一个最简单的 GPT Image 2.5 在线图片生成器 了。
十九、实际开发时几个参数怎么选
如果只是做测试,我一般建议:
javascript
{
model: "gpt-image-2.5-sunburst",
size: "1024x1024",
quality: "low"
}
如果是最终图片:
javascript
{
model: "gpt-image-2.5-sunburst",
size: "1536x1024",
quality: "high"
}
如果是透明素材:
javascript
{
model: "gpt-image-2.5-sunburst",
size: "1024x1024",
quality: "high",
background: "transparent",
output_format: "png"
}
如果是网页图片,希望文件体积更小:
javascript
{
output_format: "webp",
output_compression: 50
}
具体参数最终还是应该根据图片用途、生成速度、图片质量和文件大小进行权衡。
二十、总结
GPT Image 2.5 的 API 调用其实并不复杂。
最简单的核心代码就是:
javascript
const result = await openai.images.generate({
model: "gpt-image-2.5-sunburst",
prompt: "你的图片描述"
});
然后取:
javascript
result.data[0].b64_json
再通过:
javascript
Buffer.from(imageBase64, "base64")
转换成真正的图片文件。
如果只是做:
text
文字 → 图片
优先考虑:
text
Image API
如果需要:
text
生成
↓
继续修改
↓
再次修改
↓
保持上下文
则可以考虑:
text
Responses API
而在实际项目中,GPT Image 2.5 比较值得关注的几个参数就是:
text
model
prompt
size
quality
background
output_format
output_compression
n
stream
partial_images
把这些参数掌握之后,基本就可以覆盖图片生成、透明素材、图片编辑、批量生成以及流式预览等常见需求。
官方文档目前提供的 GPT Image 2.5 模型为 gpt-image-2.5-sunburst 和 gpt-image-2.5-flare,两套 API 均支持图片输出的尺寸、质量、格式和压缩等配置。