九、OpenAI之图片生成(Image generation)

学习用DALL.E的API怎样生成和操作图片

1 介绍

图片API提供3个方法来和图片进行交互:

  1. 从0开始基于文字提示创建图片(DALL.E 3 and DALL.E2)
  2. 基于一个新的提示词,通过让模型替换已有图像的某些区域来创建图像的编辑版本;(DALL.E2)
  3. 对1个已有的图片创建多个变化的版本(DALL.E2)

本指南涵盖了使用这三个API端点的基础知识,并提供了有用的代码示例。要尝试DALL·e3,请转到ChatGPT。

2 使用

图片生成的端点允许你通过一个提示词创建一个原始的图片。使用DALL.E3可以创建图片的大小有:024x1024, 1024x1792 或 1792x1024 像素。
默认图片的生成为标准质量,但使用DALL.E3可以通过quality: ‘hd’ 来强化细节。标准质量的图片生成速度是最快的,
你可能使用DALL.E3一次请求一个图片,或使用DALL.E2一次请求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

3 提示词

对于发布的DALL.E3为了安全模型采用默认的提示词和自动重写功能,并加入了一些细节(更详细的提示词会生成更高质量的图片)。
目前不可能屏蔽这个特性,为达到理想的图片你可以使用下面的提示词:I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS。在数据返回对象的revised_prompt字段中,可以查看更新的提示词。

4 DALL-E3生成案例

在这里插入图片描述
使用response_format参数,每个图像都可以作为URL或Base64数据返回。url将在一小时后过期

5 编辑(DALL-E2)

也被称为“inpainting”,图像编辑端点允许您通过上传图像和指示应该替换哪些区域的掩码来编辑或扩展图像。遮罩的透明区域表示应该编辑图像的位置,提示符应该描述完整的新图像,而不仅仅是擦除的区域。这个端点可以在ChatGPT Plus中实现DALL·E图像编辑等体验。

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图片,且尺寸必须相同。在生成输出时不使用遮罩的非透明区域,因此它们不一定需要像上面的例子那样与原始图像匹配。

6 变化(DALL-E2)

图像变化的端点允许你生成一个变化的图片

from openai import OpenAI
client = OpenAI()

response = client.images.create_variation(
  model="dall-e-2",
  image=open("corgi_and_cat_paw.png", "rb"),
  n=1,
  size="1024x1024"
)

image_url = response.data[0].url

在这里插入图片描述
与编辑端点类似,输入图像必须是大小小于4MB的正方形PNG图像。

6 内容审核

提示和图像根据我们的内容策略进行过滤,当提示或图像被标记时返回错误。
特定语言技巧:

  • 使用内存中的图片数据
    在上面的Python的案例中使用open读取磁盘上的数据。在其它一些案例中,你可以读取内存中的图片数据。下面是读取内存中字节流的API的例子:
from io import BytesIO
from openai import OpenAI
client = OpenAI()

# This is the BytesIO object that contains your image data
byte_stream: BytesIO = [your image data]
byte_array = byte_stream.getvalue()
response = client.images.create_variation(
  image=byte_array,
  n=1,
  model="dall-e-2",
  size="1024x1024"
)
  • 操作图片数据
    在调用API之前你可以需要对图片进行处理,下面是使用PIL库调整图片大小的案例:
from io import BytesIO
from PIL import Image
from openai import OpenAI
client = OpenAI()

# 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 = client.images.create_variation(
  image=byte_array,
  n=1,
  model="dall-e-2",
  size="1024x1024"
)
  • 处理错误
    由于无效输入、速率限制或其他问题,API请求可能会返回错误。这些错误可以用try来处理。Except语句,错误详细信息可在e.error中找到
import openai
from openai import OpenAI
client = OpenAI()

try:
  response = client.images.create_variation(
    image=open("image_edit_mask.png", "rb"),
    n=1,
    model="dall-e-2",
    size="1024x1024"
  )
  print(response.data[0].url)
except openai.OpenAIError as e:
  print(e.http_status)
  print(e.error)
  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要编写使用API向OpenAI请求生成一张图片的网页代码,您可以按照以下步骤进行: 1.注册OpenAI账户并获取API密钥 首先,您需要在OpenAI网站上注册一个账户,并获取用于访问API的密钥。在网站上,您可以找到相关文档和指南,以帮助您完成此过程。 2.安装OpenAI Python包 OpenAI提供了一个Python包,您可以使用它来与API交互。在安装该包之前,请确保您的计算机上已经安装了Python环境。安装OpenAI Python包可以使用以下命令: ``` pip install openai ``` 3.编写Python脚本 在您的项目中,您可以编写一个Python脚本来与OpenAI API进行交互。以下是一个简单的例子: ``` python import openai import requests import base64 openai.api_key = "YOUR_API_KEY_HERE" def generate_image(prompt): response = openai.Image.create(prompt=prompt, n=1) image_url = response['data'][0]['url'] image_data = requests.get(image_url).content encoded_image = base64.b64encode(image_data).decode('utf-8') return encoded_image prompt = "A cat sitting on a sofa" image_data = generate_image(prompt) # Output the image in HTML html_output = f"<img src='data:image/png;base64,{image_data}'/>" print(html_output) ``` 在这个脚本中,我们首先导入了`openai`和`requests`模块,并设置了我们的API密钥。然后,我们定义了一个`generate_image`函数,它使用OpenAI的`Image.create`方法生成一张图片,然后使用`requests`库将图片从URL中获取,并将图片编码为base64格式的字符串。最后,我们将输出的HTML代码保存到变量`html_output`中,以便将其插入到网页中。 4.将Python脚本嵌入到网页中 最后,您可以将Python脚本嵌入到HTML代码中,以生成您的网页。在这个例子中,我们可以将生成的HTML代码输出到控制台中,或者将其写入到文件中,并将文件作为网页在浏览器中打开。 以上是一个简单的例子,您可以根据自己的需要进行修改和扩展。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值