OpenAI 发布最新的4o图像生成 API :gpt-image-1,该API支持基于文本提示生成、编辑和变体化图片。

gpt-image-1 是OpenAI目前最先进的模型,具有更强的理解能力、画面细节、现实世界知识以及更准确的文本渲染能力,推荐优先使用。

gpt-image-1 的主要亮点包括:

  • 多样化风格支持:可生成多种风格图像,满足从手绘、插画到现实照片等多种需求。
  • 高度自定义:能精准遵循定制化指令与品牌需求。
  • 文本渲染准确:显著提升了图像中文字内容的生成准确性。
  • 广泛的世界知识:具备较强的现实背景理解和知识驱动能力。
  • 高可靠性 API 接入:开发者和企业可直接集成到自身工具和平台。

这些特性使其不仅适用于简单的图片生成,还能满足对图片风格和细节要求更高的应用场景。

API 三大核心端点

  1. Generations(生成)
    通过文本描述直接生成新图片。可设置图片数量、分辨率、质量、透明度等参数。代码调用简单,支持 Python、JS、Shell 等主流环境。

    • 典型用法:用 prompt 生成插画、头像、像素风格素材等。
  2. Edits(编辑)
    对已有图片进行编辑,可以:

    • 上传一张或多张图片作为参考,让 AI 组合生成新场景(如礼品篮案例)。
    • 利用 mask(掩码),仅替换部分区域(如给房间加泳池等)。
    • 支持 inpainting,本质是“局部魔改”。
    • 图片和掩码尺寸需一致,掩码要有 alpha 通道。
  3. Variations(变体)(仅 DALL·E 2 支持)
    上传一张图片,让模型生成风格、内容相似但不同的图片变体,常用于创意扩展或批量输出。

图像输出自定义

  • 尺寸:支持正方形(1024×1024)、竖屏(1024×1536)、横屏(1536×1024)等主流分辨率,默认 auto 自动调整。
  • 质量:low、medium、high,默认 auto。高质量意味着细节更丰富,但生成慢、成本更高。
  • 格式:默认 PNG,支持 JPEG、WebP。后两者可自定义压缩比,适合网页加速等需求。
  • 透明背景:gpt-image-1 可直接输出带 alpha 透明通道的 PNG/WebP,适合制作 UI、图标、素材。
  • 多图批量生成:设置 n 参数即可一次生成多张图片,提升效率。

能力边界与限制

  • 延迟:复杂场景或高质量大尺寸,生成时间可能长达 2 分钟,不适合强时效场景。
  • 文本渲染:gpt-image-1 文字绘制能力已显著提升,但极高精度的排版/字形场景仍有概率出错。
  • 一致性:多次生成同一角色、品牌形象时偶有不一致,需结合“图片参考”/“编辑”端点配合。
  • 构图控制:对结构/版式高度敏感的画面,元素位置有时不够精准,需要反复迭代。
  • 内容审核:所有请求都受官方内容安全政策(可选“auto”/“low”审核级别),不支持违规、敏感等内容生成。

费用与 Token 计价

  • 按Token计费,文本输入、图片输入、图片输出分开计价:
    • 文本输入:$5/百万tokens
    • 图片输入:$10/百万tokens
    • 图片输出:$40/百万tokens
  • 换算到单张图片约为:
    • 低质量约$0.02/张
    • 中质量约$0.07/张
    • 高质量约$0.19/张
  • 生成图片成本由图片 token 数量决定,token 总数受分辨率、质量、输出格式等影响。
  • 高分辨率和高质量图像,token 消耗(即费用)显著增加。
  • 提示词本身也会计入输入 token,最终费用请参照官方 价格页面

典型应用场景举例

  • 设计与编辑(Canva):用 AI 生成/编辑平面设计、将手绘草图变为精美图像、精细化编辑等。
  • Logo 和品牌资产生成(GoDaddy):一键生成/编辑 logo、移除背景、生成定制字体等,辅助用户打造品牌形象及社媒内容。
  • 营销物料生成(HubSpot):为企业客户快速批量生成社交媒体、邮件推广、落地页等高质量视觉内容,无需专业设计师。
  • 食谱与购物清单配图(Instacart):为食谱及购物清单自动生成吸引人的图片。
  • 视频编辑辅助(invideo):提供更强大的文本生成、图像编辑、风格引导功能,提升视频创作体验。

最佳实践与Tips

  • 复杂场景或高要求文本推荐先低质量小尺寸试错,再上高质量大图。
  • 使用“图片编辑+掩码”功能,可以精准替换页面区域,适合 UI、包装等复用场景。
  • 要多图一致性,可以用同一参考图反复编辑,或合成同一风格素材集。
  • 尽量用详细、明确的 prompt(包括风格、元素、颜色等),结果更可控。

多家主流平台已集成或尝试该能力

OpenA GPT Image 图像生成API指南


概览

OpenAI API 允许你通过文本提示生成和编辑图像,支持 GPT Image 或 DALL·E 模型。

目前,图像生成仅可通过 Image API 实现。我们正积极推进对 Responses API 的支持。

Image API 提供三个端点,每个端点具有不同的能力:

你还可以通过指定质量、尺寸、格式、压缩率,以及是否需要透明背景,自定义输出

模型对比

我们最新、最先进的图像生成模型是 gpt-image-1,这是一款原生多模态语言模型。

我们推荐该模型,因为它在图像生成质量上表现优异,且能利用世界知识进行图像创作。当然,你也可以用 Image API 调用专用图像生成模型 DALL·E 2 或 DALL·E 3。

模型 支持端点 使用场景 DALL·E 2 Image API: Generations, Edits, Variations 成本较低、支持并发请求、修补(带掩码的图像编辑) DALL·E 3 Image API: 仅 Generations 图像质量高于 DALL·E 2,支持更大分辨率 GPT Image Image API: Generations, Edits – Responses API 即将支持 指令理解能力强,文本渲染优异,编辑细致,具备世界知识

本指南重点介绍 GPT Image,你也可以切换至 DALL·E 2DALL·E 3 的文档。

生成图像

你可以使用 图像生成端点 ,基于文本提示创建图像。了解如何自定义输出(尺寸、质量、格式、透明度)可参见下方的自定义图像输出章节。

你可以设置 n 参数,在一次请求中生成多张图片(默认只返回一张图片)。

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-1",
  prompt,
});

// 保存图片到文件
const image_base64 = result.data[0].b64_json;
const image_bytes = Buffer.from(image_base64, "base64");
fs.writeFileSync("otter.png", image_bytes);

from openai import OpenAI
import base64
client = OpenAI()

prompt = """
A children's book drawing of a veterinarian using a stethoscope to
listen to the heartbeat of a baby otter.
"""

result = client.images.generate(
    model="gpt-image-1",
    prompt=prompt
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# 保存图片到文件
with open("otter.png", "wb") as f:
    f.write(image_bytes)

curl -X POST "https://api.openai.com/v1/images/generations" 
    -H "Authorization: Bearer $OPENAI_API_KEY" 
    -H "Content-type: application/json" 
    -d '{
        "model": "gpt-image-1",
        "prompt": "A childrens book drawing of a veterinarian using a stethoscope to listen to the heartbeat of a baby otter."
    }' | jq -r '.data[0].b64_json' | base64 --decode > otter.png

编辑图像

图像编辑端点 可用于:

  • 编辑已有图像
  • 利用其他图片作为参考生成新图像
  • 通过上传图像和掩码,仅替换部分区域(即修补/inpainting)

使用参考图像生成新图

你可以用一张或多张图片作为参考,生成新图片。

本例中我们用 4 张输入图片生成一个包含所有物品的礼品篮新图像。

import base64
from openai import OpenAI
client = OpenAI()

prompt = """
Generate a photorealistic image of a gift basket on a white background
labeled 'Relax & Unwind' with a ribbon and handwriting-like font,
containing all the items in the reference pictures.
"""

result = client.images.edit(
    model="gpt-image-1",
    image=[
        open("body-lotion.png", "rb"),
        open("bath-bomb.png", "rb"),
        open("incense-kit.png", "rb"),
        open("soap.png", "rb"),
    ],
    prompt=prompt
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# 保存图片到文件
with open("gift-basket.png", "wb") as f:
    f.write(image_bytes)

import fs from "fs";
import OpenAI, { toFile } from "openai";

const client = new OpenAI();

const imageFiles = [
  "bath-bomb.png",
  "body-lotion.png",
  "incense-kit.png",
  "soap.png",
];

const images = await Promise.all(
  imageFiles.map(
    async (file) =>
      await toFile(fs.createReadStream(file), null, {
        type: "image/png",
      }),
  ),
);

const rsp = await client.images.edit({
  model: "gpt-image-1",
  image: images,
  prompt: "Create a lovely gift basket with these four items in it",
});

// 保存图片到文件
const image_base64 = rsp.data[0].b64_json;
const image_bytes = Buffer.from(image_base64, "base64");
fs.writeFileSync("basket.png", image_bytes);

curl -s -D >(grep -i x-request-id >&2) 
  -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) 
  -X POST "https://api.openai.com/v1/images/edits" 
  -H "Authorization: Bearer $OPENAI_API_KEY" 
  -F "model=gpt-image-1" 
  -F "image[]=@body-lotion.png" 
  -F "image[]=@bath-bomb.png" 
  -F "image[]=@incense-kit.png" 
  -F "image[]=@soap.png" 
  -F 'prompt=Generate a photorealistic image of a gift basket on a white background labeled "Relax & Unwind" with a ribbon and handwriting-like font, containing all the items in the reference pictures'

使用掩码编辑图片(修补)

你可以提供掩码,指定图片哪些区域需要编辑。掩码的透明区域将被替换,黑色区域则保持不变。

你可以用提示描述整个新图像,不只限于被擦除的区域。如果提供多张输入图像,掩码会应用于第一张图片。

from openai import OpenAI
client = OpenAI()

result = client.images.edit(
    model="gpt-image-1",
    image=open("sunlit_lounge.png", "rb"),
    mask=open("mask.png", "rb"),
    prompt="A sunlit indoor lounge area with a pool containing a flamingo"
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# 保存图片到文件
with open("composition.png", "wb") as f:
    f.write(image_bytes)

import fs from "fs";
import OpenAI, { toFile } from "openai";

const client = new OpenAI();

const rsp = await client.images.edit({
  model: "gpt-image-1",
  image: await toFile(fs.createReadStream("sunlit_lounge.png"), null, {
    type: "image/png",
  }),
  mask: await toFile(fs.createReadStream("mask.png"), null, {
    type: "image/png",
  }),
  prompt: "A sunlit indoor lounge area with a pool containing a flamingo",
});

// 保存图片到文件
const image_base64 = rsp.data[0].b64_json;
const image_bytes = Buffer.from(image_base64, "base64");
fs.writeFileSync("lounge.png", image_bytes);

curl -s -D >(grep -i x-request-id >&2) 
  -o >(jq -r '.data[0].b64_json' | base64 --decode > lounge.png) 
  -X POST "https://api.openai.com/v1/images/edits" 
  -H "Authorization: Bearer $OPENAI_API_KEY" 
  -F "model=gpt-image-1" 
  -F "mask=@mask.png" 
  -F "image[]=@sunlit_lounge.png" 
  -F 'prompt=A sunlit indoor lounge area with a pool containing a flamingo'

掩码要求

待编辑图片和掩码需为相同格式和尺寸(小于 25MB)。

掩码图片还必须包含 alpha 通道。如果用图片编辑工具创建掩码,请确保保存时包含 alpha 通道。

为黑白掩码添加 alpha 通道

你可以用程序方式给黑白掩码添加 alpha 通道。

为黑白掩码添加 alpha 通道

from PIL import Image
from io import BytesIO

# 1. 加载黑白掩码为灰度图
mask = Image.open(img_path_mask).convert("L")

# 2. 转为 RGBA,以便有 alpha 通道
mask_rgba = mask.convert("RGBA")

# 3. 用掩码本身填充 alpha 通道
mask_rgba.putalpha(mask)

# 4. 转换为字节
buf = BytesIO()
mask_rgba.save(buf, format="PNG")
mask_bytes = buf.getvalue()

# 5. 保存结果文件
img_path_mask_alpha = "mask_alpha.png"
with open(img_path_mask_alpha, "wb") as f:
    f.write(mask_bytes)

自定义图像输出

你可以配置如下输出选项:

  • 尺寸:图像分辨率(如 1024×1024、1024×1536 等)
  • 质量:渲染质量(如 low、medium、high)
  • 格式:文件输出格式
  • 压缩率:JPEG 和 WebP 格式下的压缩级别(0-100%)
  • 背景:透明或不透明

尺寸和质量选项

正方形且标准质量的图片生成速度最快。默认尺寸为 1024×1024 像素。

输出格式

Image API 返回 base64 编码的图像数据。默认格式为 png,也可指定 jpeg 或 webp。

如果使用 jpeg 或 webp,还可通过 output_compression 参数控制压缩级别(0-100%)。比如 output_compression=50 表示压缩 50%。

透明度

gpt-image-1 模型支持透明背景。设置 background 参数为 transparent 即可。

仅 png 和 webp 格式支持透明背景。

透明度建议搭配 medium 或 high 质量使用。

生成透明背景图像示例

import OpenAI from "openai";
import fs from "fs";
const openai = new OpenAI();

const result = await openai.images.generate({
  model: "gpt-image-1",
  prompt: "Draw a 2D pixel art style sprite sheet of a tabby gray cat",
  size: "1024x1024",
  background: "transparent",
  quality: "high",
});

// 保存图片到文件
const image_base64 = result.data[0].b64_json;
const image_bytes = Buffer.from(image_base64, "base64");
fs.writeFileSync("sprite.png", image_bytes);

from openai import OpenAI
import base64
client = OpenAI()

result = client.images.generate(
    model="gpt-image-1",
    prompt="Draw a 2D pixel art style sprite sheet of a tabby gray cat",
    size="1024x1024",
    background="transparent",
    quality="high",
)

image_base64 = result.json()["data"][0]["b64_json"]
image_bytes = base64.b64decode(image_base64)

# 保存图片到文件
with open("sprite.png", "wb") as f:
    f.write(image_bytes)

curl -X POST "https://api.openai.com/v1/images" 
    -H "Authorization: Bearer $OPENAI_API_KEY" 
    -H "Content-type: application/json" 
    -d '{
        "prompt": "Draw a 2D pixel art style sprite sheet of a tabby gray cat",
        "quality": "high",
        "size": "1024x1024",
        "background": "transparent"
    }' | jq -r 'data[0].b64_json' | base64 --decode > sprite.png

限制

GPT-4o 图像模型是一款强大且多功能的图像生成模型,但仍需注意以下局限:

  • 延迟:复杂提示可能需要最多 2 分钟处理。
  • 文本渲染:虽较 DALL·E 系列大幅提升,但在精确文字排版和清晰度方面仍有一定难度。
  • 一致性:模型有能力保持图像一致性,但多次生成同一角色或品牌元素时,偶尔仍会出现不一致。
  • 构图控制:尽管指令理解已提升,模型在元素精准布局、结构化或版式敏感的图像生成上有时仍有困难。

内容审核

所有提示与生成图像都将根据我们的内容政策进行过滤。

使用 gpt-image-1 生成图像时,可以通过 moderation 参数控制审核严格度。支持以下两种取值:

  • auto(默认):标准过滤,限制生成某些潜在不适宜内容。
  • low:限制更少。

费用与延迟

本模型通过先生成专用图像 token 再渲染图片。图片尺寸越大、质量越高,token 数量越多,生成时延与成本也越高。

token 数取决于图像尺寸和质量:

此外还需计算提示文本使用的 输入 token

详细价格信息可参考 价格页面