文档地址:https://platform.openai.com/docs/guides/images/introduction?context=node

图像生成(Image generation)

了解如何使用 API 中的 DALL·E 生成或操作图像。

想要在 ChatGPT 中生成图像?前往 chat.openai.com。

介绍

Images API 提供了三种与图像交互的方法:

  • 根据文本提示从头开始创建图像(DALL·E 3 和 DALL·E 2)
  • 根据新的文本提示,通过让模型替换预先存在的图像的某些区域来创建图像的编辑版本(仅限 DALL·E 2)
  • 创建现有图像的变体(仅限 DALL·E 2)

本指南通过有用的代码示例介绍了使用这三个 API 端点的基础知识。要尝试 DALL·E 3,请前往 ChatGPT。要试用 DALL·E 2,请查看DALL·E 预览应用。

用法

几代人

图像生成端点允许您根据文本提示创建原始图像。使用 DALL·E 3 时,图像的尺寸可以为 1024x10241024x17921792x1024 像素。

默认情况下,图像以standard 质量生成,但使用 DALL·E 3 时,您可以设置quality: "hd" 以增强细节。方形、标准质量的图像生成速度最快。

您可以使用 DALL·E 3 一次请求 1 个图像(通过发出并行请求来请求更多图像),或者使用 DALL·E 2 一次最多请求 10 个图像 n 参数.

from openai import OpenAI
client = OpenAI()

response = client.images.generate(
  model="dall-e-3",
  prompt="a white siamese cat",
  size="1024x1024",
  quality="standard",
  n=1,
)

image_url = response.data[0].url

提示

随着 DALL·E 3 的发布,该模型现在采用提供的默认提示,并出于安全原因自动重写它,并添加更多细节(更详细的提示通常会产生更高质量的图像)。

虽然目前无法禁用此功能,但您可以通过在提示中添加以下内容来使用提示来使输出更接近您请求的图像:I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS:

revised_prompt 更新后的提示在数据响应对象的字段中可见。

DALL·E 3 示例

迅速的 一代
一张白色暹罗猫的照片。
使用 response_format 参数,每个图像都可以作为 URL 或 Base64 数据返回。网址将在一小时后过期。

编辑(仅限 DALL·E 2)
也称为“修复”,图像编辑端点允许您通过上传图像和遮罩来编辑或扩展图像,指示哪些区域应该被替换。遮罩的透明区域指示应编辑图像的位置,提示应描述完整的新图像,而不仅仅是擦除区域。此端点可以实现类似于 DALL·E 预览应用中的编辑器的体验。

编辑图像
Python

Python
from openai import OpenAI
client = OpenAI()

response = client.images.edit((
model=”dall-e-2”,
image=open(“sunlit_lounge.png”, “rb”),
mask=open(“mask.png”, “rb”),
prompt=”A sunlit indoor lounge area with a pool containing a flamingo”,
n=1,
size=”1024x1024”
)
image_url = response.data[0].url
图像 面具 输出

提示:阳光明媚的室内休息区,设有包含火烈鸟的游泳池

上传的图像和蒙版必须都是大小小于4MB的方形PNG图像,并且尺寸必须相同。生成输出时不会使用遮罩的非透明区域,因此它们不一定需要像上面的示例一样与原始图像匹配。

变体(仅限 DALL·E 2)
图像变体端点允许您生成给定图像的变体。

生成图像变体
Python

Python
from openai import OpenAI
client = OpenAI()

response = client.images.create_variation(
image=open(“image_edit_original.png”, “rb”),
n=2,
size=”1024x1024”
)

image_url = response.data[0].url
图像 输出

与编辑端点类似,输入图像必须是大小小于 4MB 的方形 PNG 图像。

内容审核
根据我们的内容政策过滤提示和图像,当提示或图像被标记时返回错误。

特定于语言的提示
使用内存中的图像数据
上述指南中的 Node.js 示例使用 fs 模块从磁盘读取图像数据。在某些情况下,您可能会将图像数据存储在内存中。下面是一个使用存储在 Node.js Buffer 对象中的图像数据的 API 调用示例:

import OpenAI from “openai”;

const openai = new OpenAI();

// This is the Buffer object that contains your image data
const buffer = [your image data];

// Set a name that ends with .png so that the API knows it’s a PNG image
buffer.name = “image.png”;

async function main() {
const image = await openai.images.createVariation({ model: “dall-e-2”, image: buffer, n: 1, size: “1024x1024” });
console.log(image.data);
}
main();
使用 TypeScript
如果您使用 TypeScript,您可能会遇到图像文件参数的一些怪癖。下面是通过显式转换参数来解决类型不匹配问题的示例:

import fs from “fs”;
import OpenAI from “openai”;

const openai = new OpenAI();

async function main() {
// Cast the ReadStream to any to appease the TypeScript compiler
const image = await openai.images.createVariation({
image: fs.createReadStream(“image.png”) as any,
});

console.log(image.data);
}
main();
这是内存中图像数据的类似示例:

import fs from “fs”;
import OpenAI from “openai”;

const openai = new OpenAI();

// This is the Buffer object that contains your image data
const buffer: Buffer = [your image data];

// Cast the buffer to any so that we can set the name property
const file: any = buffer;

// Set a name that ends with .png so that the API knows it’s a PNG image
file.name = “image.png”;

async function main() {
const image = await openai.images.createVariation({
file,
1,
“1024x1024”
});
console.log(image.data);
}
main();
错误处理
API 请求可能会因输入无效、速率限制或其他问题而返回错误。这些错误可以使用 try…catch 语句进行处理,错误详细信息可以在 error.response 或 error.message 中找到:

import fs from “fs”;
import OpenAI from “openai”;

const openai = new OpenAI();

try {
const response = openai.images.createVariation(
fs.createReadStream(“image.png”),
1,
“1024x1024”
);
console.log(response.data.data[0].url);
} catch (error) {
if (error.response) {
console.log(error.response.status);
console.log(error.response.data);
} else {
console.log(error.message);
}
}

作者:Jeebiz  创建时间:2023-12-17 00:52
最后编辑:Jeebiz  更新时间:2023-12-28 16:43