安装
pip install dalle2
使用
设置
- 访问 https://openai.com/dall-e-2/
- 创建一个 OpenAI 账户
- 访问 https://labs.openai.com/
- 打开开发者工具中的网络选项卡
- 输入提示并按下“生成”
- 查找对 https://labs.openai.com/api/labs/tasks 的请求
- 在请求头中查找授权信息获取 Bearer Token
from dalle2 import Dalle2
dalle = Dalle2("sess-xxxxxxxxxxxxxxxxxxxxxxxxxxxx") # 你的 Bearer Key
生成图像
generations = dalle.generate("通向另一个次元的门户, 数字艺术")
print(generations)
✔️ 任务创建成功,ID: task-xsuhOthvBXLEjddn3ynyiiOR
⌛ 等待任务完成...
...任务还未完成
...任务还未完成
...任务还未完成
...任务还未完成
🙌 任务完成!
[
{
'id': 'generation-sCnERSYDPP0Zu14fsdXEcKmL',
'object': 'generation',
'created': 1553332711,
'generation_type': 'ImageGeneration',
'generation': {
'image_path': 'https://openailabsprodscus.blob.core.windows.net/private/user-hadpVzldsfs28CwvEZYMUT/generations/generation...'
},
'task_id': 'task-nERkiKsdjVCSZ50yD69qewID',
'prompt_id': 'prompt-2CtaLQsgUbJHHDoJQy9Lul3T',
'is_public': false
},
# 还有 3 个...
]
生成图像并下载
file_paths = dalle.generate_and_download("通向另一个次元的门户, 数字艺术")
✔️ 任务创建成功,ID: task-xsuhOthvBXLEjddn3ynyiiOR
⌛ 等待任务完成...
...任务还未完成
...任务还未完成
...任务还未完成
...任务还未完成
🙌 任务完成!
✔️ 下载成功: C:\...\generation-XySidj4N8EN6Ok9ed15BZ2bs.webp
✔️ 下载成功: C:\...\generation-IK3UdxDz77FA5SLKpQPIITdU.webp
✔️ 下载成功: C:\...\generation-uNejKBXz1z6EQxJAT9pAZbof.webp
✔️ 下载成功: C:\...\generation-Ol1wEqNprf34vNohmJz0iUiE.webp
生成特定数量的图像
generations = dalle.generate_amount("通向另一个次元的门户", 8) # 每批生成 4 张图像 -> 最好使用 amount % 4 == 0 的值
# 下载图像
file_paths = dalle.download(generations)
print(file_paths)
✔️ 任务创建成功,ID: task-lm0V4nZasgAFasd7AsStE67
⌛ 等待任务完成...
...任务还未完成
...任务还未完成
...任务还未完成
...任务还未完成
🙌 任务完成!
✔️ 任务创建成功,ID: task-WcetZOHt8asdvHb433gi
⌛ 等待任务完成...
...任务还未完成
...任务还未完成
...任务还未完成
...任务还未完成
🙌 任务完成!
从带遮罩的文件生成图像
DALL·E 支持一种"inpainting" API,可以填充图像的透明部分。 该网站提供了一个工具,可以在现有图像上进行绘画以指示哪些部分需要变为透明。此 Python 包假设您提供的图像已经处理过,具有透明部分。
# 使已保存图像的右半部分透明
from PIL import Image, ImageDraw
image = Image.open('my_image.png')
m, n = image.size
area_to_keep = (0, 0, m//2, n)
image_alpha = Image.new("L", image.size, 0)
draw = ImageDraw.Draw(image_alpha)
draw.rectangle(area_to_keep, fill=255)
image_rgba = image.copy()
image_rgba.putalpha(image_alpha)
image_rgba = image_rgba.resize((1024, 1024)) # 图像必须是正方形且大小为 1024x1024
image_rgba.save('image_with_transparent_right_half.png')
# 让 DALL·E 填充透明的右半部分
generations = dalle.generate_from_masked_image(
"通向另一个次元的门户, 数字艺术",
"image_with_transparent_right_half.png",
)
✔️ 任务创建成功,ID: task-xsuhOthvBXLEjddn3ynyiiOR
⌛ 等待任务完成...
...任务还未完成
...任务还未完成
...任务还未完成
...任务还未完成
...任务还未完成
🙌 任务完成!