OpenAI DALL·E 生成图片

更新时间:2023/08/25, 12:05

图片生成

了解如何使用DALL·E模型生成和处理图片

简介

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

  1. 根据文本提示完全生成图片
  2. 根据新的文本提示对现有图片进行编辑
  3. 生成现有图片的变体

本指南涵盖了使用这三个API端点的基础知识,以及有用的代码示例。要亲身体验,可以查看我们的DALL·E预览应用

使用方法

生成

图片生成端点允许您根据文本提示生成原创图片。生成的图片可以是256x256、512x512或1024x1024像素。较小尺寸的图片生成更快。您可以使用n参数一次请求1-10张图片。

response = openai.Image.create(
  prompt="一只白色暹罗猫",
  n=1,
  size="1024x1024"
)
image_url = response['data'][0]['url']

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

提示生成
一只白色暹罗猫
好奇的白色暹罗猫的特写摄影肖像,逆光耳朵

每张图片可以以URL或Base64数据的形式返回,使用response_format参数。URL将在一小时后过期。

编辑

图片编辑端点允许您通过上传蒙版来编辑和扩展图片。蒙版的透明区域指示应该编辑图片的区域,提示应该描述整个新图片,而不仅仅是擦去的区域。此端点可以实现类似DALL·E预览应用中的编辑器的体验。

response = openai.Image.create_edit(
  image=open("sunlit_lounge.png""rb"),
  mask=open("mask.png""rb"), 
  prompt="一个阳光充沛的室内休息区,里面有一个带火烈鸟的游泳池",
  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示例使用open函数从磁盘读取图片数据。在某些情况下,您可能已经将图片数据保存在内存中。下面是一个使用存储在BytesIO对象中的图片数据的API调用示例:

from io import BytesIO

# 这是包含您的图片数据的BytesIO对象  
byte_stream: BytesIO = [您的图片数据]
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

# 从磁盘读取图片文件并调整其大小
image = Image.open("image.png") 
width, height = 256256
image = image.resize((width, height))

# 将图片转换为BytesIO对象
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)
AI奇想空间
AI奇想空间
https://aimazing.site
AI惊奇站是一个汇聚人工智能工具、资源和教程的导航网站。 在这里,你可以发现最新的AI技术、工具和应用,学习如何使用各种AI平台和框架,获取丰富的AI资源。 欢迎广大AI爱好者加入我们的社区,开启你的AI之旅!
AI交流群
Copyright © 2024 AI奇想空间.微信