导语:
OpenAI 近日发布了其最新、最强大的图像生成API模型,由 GPT-4o 模型驱动的先进图像生成能力,首次以编程方式提供给全球的开发者和企业 ——gpt-image-1
。这款原生多模态语言模型不仅支持基于文本提示生成图像,还具备强大的图像编辑和参考图生成能力,标志着AI图像创作进入了一个新阶段。本文将深入解析 gpt-image-1
的核心特性、API使用方法、应用场景及最佳实践。
gpt-image-1
:核心亮点与优势
作为OpenAI当前最先进的图像模型,gpt-image-1
凭借其卓越的性能,成为开发者和企业的首选:
- 强大的风格驾驭能力: 轻松生成从手绘、插画到逼真照片等多种艺术风格的图像,满足多样化创作需求。
- 精准的指令遵循与定制化: 能够精确理解并执行复杂的定制化指令,更好地满足品牌视觉规范和特定场景要求。
- 显著提升的文本渲染精度: 在图像中生成文字内容的准确性和清晰度方面有了大幅改进。
- 丰富的世界知识与常识理解: 具备更强的现实背景理解能力,能基于常识创作出更合理、更具深度的图像。
- 稳定可靠的API集成: 提供高可靠性的API接口,方便开发者和企业将其无缝集成到现有工具、应用和工作流中。
这些特性使得 gpt-image-1
不仅能胜任基础的图片生成任务,更能应对那些对图像风格、细节、准确性有更高要求的复杂应用场景。
模型对比:为何选择 gpt-image-1
?
模型 | 支持端点 | 核心优势与适用场景 |
---|---|---|
DALL·E 2 | Generations, Edits, Variations | 成本相对较低,支持并发请求,擅长图像修复(Inpainting/Outpainting,带掩码编辑) |
DALL·E 3 | 仅 Generations | 图像质量优于 DALL·E 2,支持更高分辨率 |
gpt-image-1 | Generations, Edits (Responses API 即将支持) | 指令理解能力最强,文本渲染效果最佳,编辑能力精细,具备丰富的世界知识,推荐优先使用 |
注:Variations(生成变体)功能目前仅 DALL·E 2 支持。
API 核心功能详解
gpt-image-1
主要通过以下两大核心端点提供服务:
-
Generations (图像生成)
- 功能: 根据文本提示(Prompt)直接创建全新的图像。
- 典型应用: 快速生成概念插画、用户头像、像素艺术素材、产品概念图等。
- 自定义: 可精细控制生成图片的数量、分辨率、质量、输出格式及是否需要透明背景。
-
Edits (图像编辑)
- 功能: 对现有图像进行修改或基于参考图生成新图像。
- 子功能 1: 基于参考图生成: 上传一张或多张图片作为视觉参考,结合文本提示,让 AI 理解并组合这些元素生成新的场景(例如,将多个独立物品图片合成为一个礼品篮图像)。
- 子功能 2: 局部编辑与修复 (Inpainting): 利用掩码(Mask)指定图像中需要修改的区域。AI 将根据提示替换掩码标记的透明区域,保留非透明(通常为黑色)区域不变。
- 典型应用: 为产品添加背景、替换服装颜色、在场景中添加/移除元素(如给房间添加泳池)、基于草图生成精稿。
- 掩码要求:
- 原始图片和掩码图片必须是相同的格式(如 PNG)和尺寸。
- 掩码文件大小需小于 25MB。
- 关键: 掩码图片必须包含 Alpha 通道。透明区域代表需要编辑的部分。如果使用标准黑白掩码,需要先为其添加 Alpha 通道(下方提供代码示例)。
开发者指南:OpenAI API Key 获取、访问、代码示例与定价
开发者若想利用 gpt-image-1
的强大功能,需要了解其访问方式、集成方法以及相关的成本结构。
- API 访问与端点:
gpt-image-1
通过 OpenAI 的标准 REST API 提供服务。- 图像生成主要通过向
https://api.openai.com/v1/images/generations
端点发送 POST 请求实现。 - 图像编辑则通过向
https://api.openai.com/v1/images/edits
端点发送 POST 请求完成。 - 需要注意的是,用于生成图像变体的
/images/variations
端点不支持gpt-image-1
模型,该功能目前仅限于DALL-E 2
。 - OpenAI 计划将图像生成能力整合进其 Responses API。Responses API 设计用于创建有状态的、类似对话的交互。将图像生成融入其中,意味着未来开发者或许能够构建更复杂的应用,让模型在持续的对话流中根据上下文生成或编辑图像,为实现动态叙事、协作设计等更高级的多模态交互应用铺平道路。
- 认证与 SDK:
- API 调用采用标准的 API 密钥认证方式,通过在 HTTP 请求头中包含
Authorization: Bearer {YOUR_API_KEY}
来实现。 - OpenAI 提供了多种语言的官方 SDK(软件开发工具包)以简化集成过程,例如 Python SDK 的使用示例在多个文档中均有提及。
- API 调用采用标准的 API 密钥认证方式,通过在 HTTP 请求头中包含
* OpenAI API Key 获取
获取官方 API Key:
* 您需要在 OpenAI 官网注册账户,并在账户设置中创建 API Key。请妥善保管您的 Key。
(可选) OpenAI代理兼容接口说明:
- 开发者优选
uiuiapi.com
创建 API Key,接口 (https://sg.uiuiapi.com/v1/images/generations
) 与 OpenAI 大模型以及接口兼容的服务。使用此类服务需要您在该平台注册并获取其特定的 API Token。本文后续代码示例将主要使用官方 OpenAI 端点和库。
以下是在uiuiapi
获取的gpt-image-1 api key
调用使用案列;
生成图像
你可以设置 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" \
# 或是在 uiuiapi.com 获取 api key 以上地址就换成uiuiapi地址
-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" \
# 或是在 uiuiapi.com 获取 api key 以上地址就换成uiuiapi地址
-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" \
# 或是在 uiuiapi.com 获取 api key 以上地址就换成uiuiapi地址
-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)
自定义图像输出
你可以配置如下输出选项:
- 尺寸:图像分辨率(如 1024x1024、1024x1536 等)
- 质量:渲染质量(如 low、medium、high)
- 格式:文件输出格式
- 压缩率:JPEG 和 WebP 格式下的压缩级别(0-100%)
- 背景:透明或不透明
尺寸和质量选项
正方形且标准质量的图片生成速度最快。默认尺寸为 1024x1024 像素。
输出格式
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" \
# 或是在 uiuiapi.com 获取 api key 以上地址就换成uiuiapi地址
-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。
详细价格信息可参考 价格页面。
- 定价结构:
gpt-image-1
的使用成本基于token
数量计算,并区分了不同类型的token
:- 文本输入
token
(提示词): 每 1 百万token
收费 $5 美元。 - 图像输入
token
(用于编辑或参考的图像): 每 1 百万token
收费 $10 美元。 - 图像输出
token
(生成的图像): 每 1 百万token
收费 $40 美元。
- 文本输入
- 这种定价结构清晰地反映了不同操作的计算成本差异,图像生成(输出)的定价显著高于输入操作。这可能会引导开发者在成本敏感型应用中,更倾向于利用模型的图像分析或编辑能力,或更仔细地设计提示词以减少昂贵的重复生成。
- 根据 OpenAI 提供的示例换算,一张
1024x1024
的方形图像,其生成成本大致为:低质量约 $0.02,中等质量约 $0.07,高质量约 $0.19。低质量方形图像消耗 272token
,高质量竖向图像则消耗 6,240token
,开发者可据此估算具体成本。
- 图像 Token 计算:
- 图像输入的
token
数量并非直接基于像素点,而是根据其尺寸,通过计算覆盖图像所需的 32x32 像素“补丁” (patch
) 数量来确定。 - 如果所需的补丁数量超过 1536 个
token
的预算上限,图像会被按比例缩小,以确保其能被不超过 1536 个补丁覆盖,同时保持原始宽高比。 - 最终用于计费的
token
数即为调整后的补丁数量,单个输入图像的token
上限为 1536 个。 - 这种基于补丁和缩放的计算方式,虽然对开发者预估成本带来一定复杂性,但可能反映了模型处理图像输入的内部机制,旨在平衡处理效率和细节捕捉。开发者需要参考官方文档或计价工具,并理解这一计算规则,以便准确预估成本、规划预算并进行针对性优化。
- 图像输入的
- 访问要求与潜在问题:
- 组织验证: 使用
gpt-image-1
API 可能需要先完成 OpenAI 的组织验证流程。 - 初期访问问题: 在 API 发布初期,社区中有用户报告遇到了访问问题,包括组织验证流程的技术故障或延迟、权限未能及时生效、API 密钥缓存问题(需生成新密钥解决)、预期之外的速率限制错误、模型未在可用列表中显示,甚至因地理区域限制而无法访问 (
HTTP 403
错误) 等。 - 这些初期问题反映了 OpenAI 在部署具有更高能力和访问控制的新模型时面临的运营挑战。这给早期采用者带来不便,也可能对模型的初步采用和开发者社区的信任建立产生一定影响,并暗示了为强大新模型设置门槛时可能存在的扩展性问题。
- 速率限制: API 的使用受到速率限制,通常以每分钟处理的
token
数 (TPM) 来衡量。针对gpt-image-1
的具体速率限制数值需查阅最新的官方文档或定价页面的常见问题解答。
- 组织验证: 使用
UIUIAPI结论;
OpenAI的gpt-image-1
API发布标志着AI图像生成领域的重要进展。它首次开放了基于GPT-4o
的业界领先的原生多模态图像生成能力,为开发者提供了卓越的图像质量、精准的指令遵循、优异的文本渲染效果以及高级编辑功能。与之前的API产品(如DALL-E 3
和DALL-E 2
)相比,gpt-image-1
在综合能力上实现了显著提升。
这一API为各行业开发者提供了强大的新工具,预计将催生大量创新应用和工作流程,从自动化营销素材生成到交互式设计辅助,再到智能多模态AI代理。其原生多模态架构和对复杂指令的深刻理解,预示着未来人机交互中视觉内容生成将更加核心和无缝。
然而,开发者在使用gpt-image-1
时需考虑其较高的成本结构,并关注模型在角色一致性等方面的潜在局限性,同时注意初期可能出现的访问和稳定性问题。负责任地使用这项强大技术至关重要。OpenAI通过内置安全护栏、可控审核级别及C2PA
元数据等措施展示了对安全和内容溯源的重视,开发者也应积极配合,确保技术的健康发展和应用。
总之,gpt-image-1
API不仅展示了OpenAI的技术实力,更是其推动多模态AI平台化、赋能开发者生态战略的关键一步。与OpenAI近期发布的一系列先进模型和工具一起,勾勒出一个更加智能、互动、多模态的AI应用未来。
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章