这里一节我们介绍一下ChatGPT的图像生成,这里我们使用代码来完成,也就是通过API 来完成,因为ChatGPT 本身是不能生成图片的,言外之意我们图片生成是ChatGPT通过其他方式生成的
Images API提供了三种与图像交互的方法:
当然如果你觉得这种方式不好或者不能满足要求,可以使用midjourney,也是通过prompt 生成的
我们可以运行下面的方法生成图片,图片大小有 256x256, 512x512,1024x1024 ,例如我们这里就是1024x1024
,n 是我们要生成的图片数量,这里就是3,最多一次调用可以生成10张。
def generate():
response = openai.Image.create(
prompt="a white siamese cat",
n=3,
size="1024x1024"
)
image_urls = response['data']
print(image_urls)
运行之后我们就看到把生成的图片链接打印出来了
我们可以点看链接去看看
图像编辑API 运行通过上传遮罩来编辑和扩展图像。遮罩的透明区域指示应在何处编辑图像,提示应描述完整的新图像,而不仅仅是已擦除的区域,其实就是通过ChatGPT 生成遮罩区域的图像。
我们看一下代码
response = openai.Image.create_edit(
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']
我们的输入和输入如下所示
这里有两个问题需要注意一下,一个是我们的图片格式,否则可能抛出下面的错误
raise self.handle_error_response(
openai.error.InvalidRequestError: Invalid input image - format must be in ['RGBA', 'LA', 'L'], got RGB.
我们可以使用PIL模块进行图片格式转换
from PIL import Image
image=Image.open("original.png")
img = image.convert('RGBA')
img.save("original2.png")
还有就是我们的遮罩也就是mask 必须是和原图一样大的
raise self.handle_error_response(
openai.error.InvalidRequestError: Invalid input mask - mask size must match image size 1468x1462, got 1470x1462 instead.
其实这里准确的描述应该是可以针对我们的图片进行一些变化,也就是生成变化
def variation():
response = openai.Image.create_variation(
image=open("image_edit_mask2.png", "rb"),
n=1,
size="1024x1024"
)
image_url = response['data'][0]['url']
print(image_url)
variation()
下面分别就是我们的输入输出
这里有一个需要注意的地方那就是这个变化完全是由ChatGPT控制的,我们不能提示也就是不能使用prompt,否则
openai.error.InvalidRequestError: Additional properties are not allowed ('prompt' was unexpected)
到这里我们关于ChatGPT生成图像就已经介绍完了,可以看到的是只是有这个功能,还不够强大,目前只支持下面三种形式
如果不满足需求,可以让ChatGPT 生成prompt,然后通过midjourney根据prompt生成。