实现用gpt的api和他对话后,我们试着调用DALL·E的api进行绘画
参考文档
OpenAI API
运行代码
from openai import OpenAIclient = OpenAI()user_prompt = input("请输入您想生成的图片描述: ")response = client.images.generate(model="dall-e-3",prompt=user_prompt,size="1024x1024",quality="standard",n=1,
)image_url = response.data[0].url
print(f"生成的图片链接: {image_url}")
运行结果
生成图片
花费了我4美分,生成了以下图片,看起来还算可以
新需求1
接下来我们想要用dall-e-2来对图片进行修改,而且想让python直接显示出图片来,而不是去点击URL
我们需要先下载requests
和Pillow
库,用requests
获取图片然后用Pillow
来显示,在CMD的当中使用下面的命令去下载即可
pip install requests Pillow
我们还需要做一张想要改变哪个位置的mask图片,我是用美图秀秀随便扣的,注意要和原图保持相同的尺寸
运行代码
from openai import OpenAI
import requests
from PIL import Image
from io import BytesIOclient = OpenAI()user_prompt = input("请问你想如何修改图片: ")response = client.images.edit(model="dall-e-2",image=open("E:/Game_Program/勇者.png", "rb"),mask=open("E:/Game_Program/mask.png", "rb"),prompt=user_prompt,size="1024x1024",n=1,
)image_url = response.data[0].url
print(f"生成的图片链接: {image_url}")# 获取并显示图片
response = requests.get(image_url)
img = Image.open(BytesIO(response.content))
img.show()
运行结果
用了好几美分试了几次,发现生成的图片和第一张还是一样的,不知道哪里出问题了,有兴趣的朋友可以试试
新需求2
接下来我们直接通过上传的图片来生成2张新的图片,这个比较简单,应该不会出错,依旧是用到dall-e-2
运行代码
from openai import OpenAI
import requests
from PIL import Image
from io import BytesIOclient = OpenAI()response = client.images.create_variation(model="dall-e-2",image=open("E:/Game_Program/勇者.png", "rb"),size="1024x1024",n=2,
)for data in response.data:image_url = data.urlprint(f"生成的图片链接: {image_url}")# 获取并显示图片response = requests.get(image_url)img = Image.open(BytesIO(response.content))img.show()
运行结果
生成图片
干掉我8美分,生成的两张图片有点一言难尽啊,太抽象了吧