如何使用DALL·E API:创建惊艳图像的秘诀

注意:本文将教你如何使用OpenAI的DALL·E图像API,但请确保你已经获得了相应的API访问权限。

你是否曾经想过能够通过简单的文字描述生成令人惊艳的图像?OpenAI的DALL·E图像API为你提供了这个机会。本文将向你展示如何使用DALL·E API的三个关键端点:生成、编辑和变化,以及一些有用的提示和技巧。

开场故事

想象一下,你是一名创意设计师,你的任务是为一家时尚杂志创建独特的封面图像。你需要一种方法来将你的创意快速转化为视觉艺术,而不需要繁琐的图像编辑工作。幸运的是,有一种新颖的技术可以帮助你实现这一目标,那就是使用DALL·E API。在本文中,我们将探讨如何使用这个API来生成、编辑和变换图像,让你的创意得以充分展示。

准备工作

在开始之前,你需要完成一些准备工作。

导入必要的库

首先,导入你需要的Python库。这些库将帮助你与DALL·E API进行交互,并进行图像处理。

import openai  # OpenAI Python库,用于进行API调用
import requests  # 用于下载图像
import os  # 用于访问文件路径
from PIL import Image  # 用于显示和编辑图像

设置API密钥

在继续之前,确保你已经获取了OpenAI的API密钥,并将其设置为环境变量。你可以在终端中运行以下命令来设置API密钥:

export OPENAI_API_KEY="你的API密钥"

设置保存图像的目录

为了保存生成的图像,创建一个目录,以便后续使用。你可以使用以下代码来创建目录:

# 设置保存DALL·E图像的目录
image_dir_name = "images"
image_dir = os.path.join(os.curdir, image_dir_name)

# 如果目录不存在,则创建它
if not os.path.isdir(image_dir):
    os.mkdir(image_dir)

使用DALL·E API

现在,让我们深入了解如何使用DALL·E API的不同端点来生成、编辑和变换图像。

生成图像

生成端点用于根据文本描述生成图像。你只需提供一个文本描述,DALL·E就会尝试创建相应的图像。

必要输入:

  • prompt(str):对所需图像的文本描述。最大长度为1000个字符。

可选输入:

  • n(int):要生成的图像数量。必须介于1和10之间,默认为1。
  • size(str):生成图像的尺寸。必须是以下尺寸之一:"256x256"、"512x512"或"1024x1024"。较小的图像生成速度更快,默认为"1024x1024"。
  • response_format(str):生成的图像返回格式。必须是"url"或"b64_json"之一,默认为"url"。
  • user(str):代表你的最终用户的唯一标识符,有助于OpenAI监测和检测滥用。了解更多信息。

让我们看看如何使用DALL·E API生成图像的示例:

# 设置文本描述
prompt = "一个赛博朋克的猴子黑客,梦想着一堆美味的香蕉,数字艺术"

# 调用OpenAI API
generation_response = openai.Image.create(
    prompt=prompt,
    n=1,
    size="1024x1024",
    response_format="url",
)

# 打印响应
print(generation_response)

上述代码将返回生成的图像的URL。你可以将这个URL用于下载图像,如下所示:

# 保存图像
generated_image_name = "生成的图像.png"  # 任何你喜欢的名称,文件类型应为.png
generated_image_filepath = os.path.join(image_dir, generated_image_name)
generated_image_url = generation_response["data"][0]["url"]  # 从响应中提取图像URL
generated_image = requests.get(generated_image_url).content  # 下载图像

with open(generated_image_filepath, "wb") as image_file:
    image_file.write(generated_image)  # 将图像写入文件

接下来,我们可以使用PIL库来显示生成的图像:

# 显示生成的图像
print(generated_image_filepath)
Image.open(generated_image_filepath)

变换图像

变换端点用于生成与输入图像相似的新图像(变体)。

必要输入:

  • image(str):要用作变体基础的图像。必须是有效的PNG文件,小于4MB,并且是正方形。

可选输入:

  • n(int):要生成的图像数量。必须介于1和10之间,默认为1。
  • size(str):生成图像的尺寸。必须是以下尺寸之一:"256x256"、"512x512"或"1024x1024"。较小的图像生成速度更快,默认为"1024x1024"。
  • response_format(str):生成的图像返回格式。必须是"url"或"b64_json"之一,默认为"url"。
  • user(str):代表你的最终用户的唯一标识符,

有助于OpenAI监测和检测滥用。了解更多信息。

以下是如何生成图像变体的示例:

# 调用OpenAI API,使用`create_variation`而不是`create`
variation_response = openai.Image.create_variation(
    image=generated_image,  # 从上面生成的图像获取
    n=2,
    size="1024x1024",
    response_format="url",
)

# 打印响应
print(variation_response)

类似于生成图像,我们可以将变体的URL用于下载图像,如下所示:

# 保存变体图像
variation_urls = [datum["url"] for datum in variation_response["data"]]  # 提取URL
variation_images = [requests.get(url).content for url in variation_urls]  # 下载图像
variation_image_names = [f"变体图像_{i}.png" for i in range(len(variation_images))]  # 创建名称
variation_image_filepaths = [os.path.join(image_dir, name) for name in variation_image_names]  # 创建文件路径
for image, filepath in zip(variation_images, variation_image_filepaths):  # 遍历变体
    with open(filepath, "wb") as image_file:  # 打开文件
        image_file.write(image)  # 将图像写入文件

接下来,我们可以使用PIL库来显示生成的原始图像和变体图像:

# 显示原始图像
print(generated_image_filepath)
Image.open(generated_image_filepath)

# 显示新的变体图像
for variation_image_filepaths in variation_image_filepaths:
    print(variation_image_filepaths)
    Image.open(variation_image_filepaths)

编辑图像

编辑端点使用DALL·E生成现有图像的指定部分。编辑需要三个输入:要编辑的图像、指定要重新生成的部分的蒙版和描述所需图像的提示。

必要输入:

  • image(str):要编辑的图像。必须是有效的PNG文件,小于4MB,并且是正方形。
  • mask(str):另一个图像,其完全透明区域(例如,alpha为零的区域)指示图像应该进行编辑。必须是有效的PNG文件,小于4MB,并且与图像具有相同的尺寸。
  • prompt(str):对所需图像的文本描述。最大长度为1000个字符。

可选输入:

  • n(int):要生成的图像数量。必须介于1和10之间,默认为1。
  • size(str):生成图像的尺寸。必须是以下尺寸之一:"256x256"、"512x512"或"1024x1024"。较小的图像生成速度更快,默认为"1024x1024"。
  • response_format(str):生成的图像返回格式。必须是"url"或"b64_json"之一,默认为"url"。
  • user(str):代表你的最终用户的唯一标识符,有助于OpenAI监测和检测滥用。了解更多信息。

编辑需要一个“蒙版”,以指定图像的哪个部分需要重新生成。蒙版是一个图像,其中alpha值为0(透明)的任何像素都将重新生成。下面的代码创建一个1024x1024的蒙版,其中底半部分是透明的:

# 创建一个蒙版
width = 1024
height = 1024
mask = Image.new("RGBA", (width, height), (0, 0, 0, 1))  # 创建一个不透明的图像蒙版

# 将底半部分设置为透明
for x in range(width):
    for y in range(height // 2, height):  # 仅循环遍历蒙版的底半部分
        # 将alpha(A)设置为零以使像素变为透明
        alpha = 0
        mask.putpixel((x, y), (0, 0, 0, alpha))

# 保存蒙版
mask_name = "底半部分蒙版.png"
mask_filepath = os.path.join(image_dir, mask_name)
mask.save(mask_filepath)

现在,我们可以使用这个蒙版来编辑图像,生成一些编辑的示例:

# 编辑图像

# 调用OpenAI API
edit_response = openai.Image.create_edit(
    image=open(generated_image_filepath, "rb"),  # 来自生成部分的图像
    mask=open(mask_filepath, "rb"),  # 来自上面的蒙版
    prompt=prompt,  # 来自生成部分的文本描述
    n=1,
    size="1024x1024",
    response_format="url",
)

# 打印响应
print(edit_response)

与前面的示例一样,我们可以将编辑的图像的URL用于下载图像,如下所示:

# 保存图像
edited_image_name = "编辑后的图像.png"  # 任何你喜欢的名称,文件类型应为.png
edited_image_filepath = os.path.join(image_dir, edited_image_name)
edited_image_url = edit_response["data"][0]["url"]  # 从响应中提取图像URL
edited_image = requests.get(edited_image_url).content  # 下载图像

with open(edited_image_filepath, "wb") as image_file:
    image_file.write(edited_image)  # 将图像写入文件

现在,我们可以使用PIL库来显示原始图像和编辑后的图像:

# 显示原始图像
print(generated_image_filepath)
Image.open(generated_image_filepath)

# 显示编辑后的图像
print(edited_image_filepath)
Image.open(edited_image_filepath)

小贴士

在使用DALL·E API时,以下是一些有用的小贴士:

  • 尝试不同的文本描述:通过尝试不同的文本描述来获得不同风格和主题的图像。
  • **实验编辑

**:尝试使用不同的蒙版和文本描述来编辑图像,以获得不同的效果。

  • 注意图像尺寸:选择适合你项目需要的图像尺寸,较小的图像生成速度更快。
  • 保留API密钥安全:确保不分享你的API密钥,以防止滥用。

现在,你已经了解如何使用DALL·E API生成、编辑和变换图像,你可以尝试将这些技巧应用到你的创意项目中,为你的设计工作增添一些魔法。

结论

DALL·E API为创意设计师和艺术家提供了一个令人兴奋的机会,可以通过简单的文本描述来生成、编辑和变换惊艳的图像。无论你是在制作杂志封面、广告宣传、艺术作品还是任何其他创意项目,DALL·E API都可以成为你的得力助手。

现在,赶快尝试一下这个令人着迷的技术,看看它如何为你的创意世界带来新的可能性!

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

创建自动化试卷生成工具:使用Python和OpenPyXL

2023-9-13 19:05:46

指数词

如何使用虚构提示优化OpenAI的Whisper音频转录

2023-9-13 19:10:23

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索