OpenAi 图像生成(试用版)
了解如何使用我们的 DALL·E 型号
介绍
图像 API 提供了三种与图像交互的方法:
- 根据文本提示从头开始创建图像
- 根据新的文本提示创建现有图像的编辑
- 创建现有图像的变体
本指南介绍了使用这三个 API 终结点的基础知识以及有用的代码示例。要了解它们的实际效果,请查看我们的 DALL·E 预览应用程序。
用法
生成
图像生成终结点允许您在给定文本提示的情况下创建原始图像。生成的图像的大小可以是 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 调用:open
BytesIO
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
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"
)
错误处理
API 请求可能会由于输入无效、速率限制或其他问题而返回错误。这些错误可以通过语句处理,错误详细信息可以在 中找到:try...except
e.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)