GPT Image 2.5 API 调用教程:Node.js 实现图片生成与编辑

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-sunburst
  • gpt-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 均支持图片输出的尺寸、质量、格式和压缩等配置。

相关推荐
零基础1231 小时前
VoiceStudio 开源项目深度解析:特性、对比与实战测试
人工智能·经验分享·python·开源
故七月1 小时前
本地生活 GEO 内容质量风控体系构建 —— 基于陕西金贝儿母婴家政项目,万域智瞰 GEO 实践
人工智能·生活
老马识码1 小时前
Harness:Agent 运行时架构
人工智能
林伽一1 小时前
决策模型接口趋同、缓存按字节计价,AI 技术栈的两处底层改写| 2026年10月04日
人工智能·缓存
vilya1 小时前
我怎么给手机 GUI Agent 做双通道感知:无障碍树为主,投屏像素兜底
android·人工智能
the3clipse1 小时前
H.265熵编码核心:CABAC自适应二进制算术编码详解——如何将语法元素高效压缩为比特流
人工智能·算法·视频编码·h.265·hevc·cabac·cavlc
alonglong1 小时前
用 744 行替代 Open WebUI:llama.cpp + 本地 Qwen3 聊天栈实录
人工智能
jinyishu_1 小时前
RAG 文本分块:七种 Chunking 策略与选型方法
人工智能