转载

OpenAi 图像生成(试用版)

了解如何使用我们的 DALL·E 型号

介绍

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

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

本指南介绍了使用这三个 API 终结点的基础知识以及有用的代码示例。要了解它们的实际效果,请查看我们的 DALL·E 预览应用程序

图像 API 处于测试阶段。在此期间,API 和模型将根据你的反馈进行改进。为了确保所有用户都能舒适地制作原型,默认速率限制为每分钟 50 张图像。您可以在我们的速率限制指南中了解有关速率限制的更多信息。

用法

生成

图像生成终结点允许您在给定文本提示的情况下创建原始图像。生成的图像的大小可以是 256x256、512x512 或 1024x1024 像素。较小的尺寸生成速度更快。您可以使用 n 参数一次请求 1-10 张图像。

生成镜像

response = openai.Image.create(
prompt="a white siamese cat", n=1, size="1024x1024" ) image_url = response['data'][0]['url']

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

提示
一只白色的暹罗猫
一只白色暹罗猫的特写工作室摄影肖像,看起来很好奇,背光的耳朵

可以使用 response_format 参数将每个图像作为 URL 或 Base64 数据返回。网址将在一小时后过期。

编辑

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

编辑图像
response = openai.Image.create_edit(
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 图片,并且尺寸必须相同。生成输出时不使用蒙版的非透明区域,因此它们不一定需要像上面的例子那样与原始图像匹配。

变化

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

生成图像变体
response = openai.Image.create_variation(
image=open("corgi_and_cat_paw.png", "rb"), n=1, size="1024x1024" ) image_url = response['data'][0]['url']
图像输出

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

内容审核

系统会根据我们的内容政策过滤提示和图片,并在举报提示或图片时返回错误。如果您对误报或相关问题有任何反馈,请通过我们的帮助中心与我们联系。

特定语言提示

使用内存中的图像数据

上面指南中的 Python 示例使用该函数从磁盘读取图像数据。在某些情况下,您可能将图像数据放在内存中。下面是使用存储在对象中的图像数据的示例 API 调用:openBytesIO

from io import BytesIO

# This is the BytesIO object that contains your image data
byte_stream: BytesIO = [your image data]
byte_array = byte_stream.getvalue()
response = openai.Image.create_variation(
  image=byte_array,
  n=1,
  size="1024x1024"
)

对图像数据进行操作

在将图像传递给 API 之前对图像执行操作可能很有用。下面是用于调整图像大小的示例:PIL

<font size="4">from io import BytesIO
from PIL import Image

# Read the image file from disk and resize it
image = Image.open("image.png")
width, height = 256, 256
image = image.resize((width, height))

# Convert the image to a BytesIO object
byte_stream = BytesIO()
image.save(byte_stream, format='PNG')
byte_array = byte_stream.getvalue()

response = openai.Image.create_variation(
  image=byte_array,
  n=1,
  size="1024x1024"
)</font>


错误处理

API 请求可能会由于输入无效、速率限制或其他问题而返回错误。这些错误可以通过语句处理,错误详细信息可以在 中找到:try...excepte.error

try:
  openai.Image.create_variation(
    open("image.png", "rb"),
    n=1,
    size="1024x1024"
  )
  print(response['data'][0]['url'])
except openai.error.OpenAIError as e:
  print(e.http_status)
  print(e.error)