OpenAI 指南——图像生成

OpenAI 指南——图像生成

Flying
2023-04-04 / 0 评论 / 147 阅读 / 正在检测是否收录...

我们将学习如何使用我们的 DALL·E 模型生成或操作图。

简介

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

  1. 根据文本提示从头开始创建图像
  2. 根据新的文本提示创建现有图像的编辑
  3. 创建现有图像的变体

本指南介绍了如何使用这三个 API 端点,并提供了有用的代码示例。要查看它们的实际操作,请查看我们的 DALL·E 预览应用程序

图像 API 处于 beta 阶段。在此期间,API 和模型将根据您的反馈进行演变。为确保所有用户都可以舒适地进行原型设计,默认的速率限制为每分钟 50 张图像。如果您想要增加速率限制,请查看此帮助中心文章。随着我们对使用情况和容量要求的了解增加,我们将增加默认的速率限制。
const response = await openai.createImage({
  prompt: "a white siamese cat",
  n: 1,
  size: "1024x1024",
});
image_url = response.data.data[0].url;

使用方法

生成

图像生成终端允许您根据文本提示创建原始图像。 生成的图像可以是 256x256512x5121024x1024 像素的大小。 较小的尺寸生成速度更快。 您可以使用 n 参数一次请求 1-10 张图像

越详细的描述,就越有可能得到你或你的最终用户想要的结果。 你可以在 DALL·E 预览应用程序中探索示例,以获得更多提示灵感。 这是一个快速示例:

提示生成
一只白色的暹罗猫image_generation_simple.webp
一张白色暹罗猫的照片,它看起来很好奇,耳朵被背光照亮。image_generation_detailed.webp

每个图片可以作为 URLBase64 数据返回,使用 response_format 参数。URL 将在一小时后过期。

编辑

图像编辑端点允许您通过上传掩码来编辑和扩展图像。 掩码的透明区域指示应编辑图像的位置,提示应描述完整的新图像,而不仅仅是擦除的区域。 此端点可以启用类似我们的 DALL·E 预览应用程序中的编辑器的体验。

const response = await openai.createImageEdit(
  fs.createReadStream("sunlit_lounge.png"),
  fs.createReadStream("mask.png"),
  "A sunlit indoor lounge area with a pool containing a flamingo",
  1,
  "1024x1024"
);
image_url = response.data.data[0].url;

image-edit.jpg
提示:阳光充足的室内休息区,有一个包含火烈鸟的游泳池

上传的图片和蒙版必须都是小于 4MB 的正方形 PNG 图片,并且它们的尺寸必须相同。蒙版的非透明区域在生成输出时不会被使用,所以它们不一定需要像上面的例子那样与原始图片匹配。

变体

图像变体端点允许你生成给定图像的变体。

const response = await openai.createImageVariation(
  fs.createReadStream("corgi_and_cat_paw.png"),
  1,
  "1024x1024"
);
image_url = response.data.data[0].url;

image_variation.jpg

类似于 edits 端点,输入图像必须是小于 4MB 的正方形 PNG 图像。

内容审查

根据我们的内容策略过滤提示和图像,当提示或图像被标记时返回错误。如果您对误报或相关问题有任何反馈,请通过我们的帮助中心与我们联系。

语言特定的提示

使用内存中的图像数据

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

// 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";
const response = await openai.createImageVariation(
  buffer,
  1,
  "1024x1024"
);

使用 TypeScript

如果你使用 TypeScript ,你可能会遇到一些图片文件参数的问题。这里有一个通过显式转换参数来解决类型不匹配的例子:

// Cast the ReadStream to `any` to appease the TypeScript compiler
const response = await openai.createImageVariation(
  fs.createReadStream("image.png") as any,
  1,
  "1024x1024"
);

下面是内存中图像数据的类似示例:

// 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";
const response = await openai.createImageVariation(
  file,
  1,
  "1024x1024"
);

错误处理

API 请求可能由于无效的输入,速率限制或其他问题而返回错误。 这些错误可以使用 try...catch 语句进行处理,错误详细信息可以在 error.responseerror.message 中找到:

try {
  const response = await openai.createImageVariation(
    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);
  }
}
2

评论 (0)

取消