绘画相关API有三个,分别是 Create image(创建图像)、Create image edit(编辑图像)和 Create image variation(创建图像变体)。这些接口能够让我们用不同的方式来生成或编辑图像,满足不同的需求。下面我们分别上手体验一下这三个功能。
创建图像
Create image(创建图像)接口是基础绘画功能,它可以根据你提供的文字描述来生成一张图像。你只需要输入一句话或一段话,描述你想要的图像的内容、风格、颜色等特征,就可以得到多张符合要求的图像。Create image 接口的功能是通过调用 v1/images/generations 来实现的。这个 API需要提供以下参数:
[HttpPost(nameof(Create))] public async Task<string> Create([FromForm] string message) { var imageResult = await _openAiService.Image.CreateImage( new ImageCreateRequest { // 堆代码 duidaima.com //字符串 必填 所需图像的文本描述。最大长度为 1000 个字符 Prompt = message, //整数或空 自选 默认值为 1 要生成的图像数。必须介于 1 和 10 之间 N = 1, //字符串或空值 自选 默认值为 1024x1024 生成的图像的大小。必须是 256x256、512x512、1024x1024 之一 Size = StaticValues.ImageStatics.Size.Size256, //字符串或空值 自选 默认为 url,必须是 url b64_json 之一 ResponseFormat = StaticValues.ImageStatics.ResponseFormat.Url, //字符串 自选 代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为 //User = "TestUser" }); if (!imageResult.Successful) return $"{imageResult.Error.Code}: {imageResult.Error.Message}"; return imageResult.Results.Select(r => r.Url).First(); }
[HttpPost(nameof(Edit))] public async Task<string> Edit([FromForm] string message, [FromForm] IFormFile file) { using var memoryStream = new MemoryStream(); await file.CopyToAsync(memoryStream); var imageResult = await _openAiService.Image.CreateImageEdit( new ImageEditCreateRequest { //字符串 必填 要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是正方形。如果未提供蒙版,则图像必须具有透明度,该透明度将用作蒙版。 Image = memoryStream.ToArray(), ImageName = file.Name, //字符串 必填 所需图像的文本描述。最大长度为 1000 个字符 Prompt = message, //整数或空 自选 默认值为 1 要生成的图像数。必须介于 1 和 10 之间 N = 1, //字符串或空值 自选 默认值为 1024x1024 生成的图像的大小。必须是 256x256、512x512、1024x1024 之一 Size = StaticValues.ImageStatics.Size.Size256, //字符串或空值 自选 默认为 url,必须是 url b64_json 之一 ResponseFormat = StaticValues.ImageStatics.ResponseFormat.Url, //字符串 自选 代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为 //User = "TestUser" }); if (!imageResult.Successful) return $"{imageResult.Error.Code}: {imageResult.Error.Message}"; return imageResult.Results.Select(r => r.Url).First(); }F5 启动,我们来看一下效果:
Create image variation 接口的功能是通过调用 v1/images/variations 来实现的。这个 API 需要提供以下参数:
调用成功后,API 会返回图像对象,Demo 如下:
[HttpPost(nameof(Variation))] public async Task<string> Variation([FromForm] IFormFile file) { using var memoryStream = new MemoryStream(); await file.CopyToAsync(memoryStream); var imageResult = await _openAiService.Image.CreateImageVariation( new ImageVariationCreateRequest { //字符串 必填 要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是正方形。如果未提供蒙版,则图像必须具有透明度,该透明度将用作蒙版。 Image = memoryStream.ToArray(), ImageName = file.Name, //整数或空 自选 默认值为 1 要生成的图像数。必须介于 1 和 10 之间 N = 1, //字符串或空值 自选 默认值为 1024x1024 生成的图像的大小。必须是 256x256、512x512、1024x1024 之一 Size = StaticValues.ImageStatics.Size.Size256, //字符串或空值 自选 默认为 url,必须是 url b64_json 之一 ResponseFormat = StaticValues.ImageStatics.ResponseFormat.Url, //字符串 自选 代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为 //User = "TestUser" }); if (!imageResult.Successful) return $"{imageResult.Error.Code}: {imageResult.Error.Message}"; return imageResult.Results.Select(r => r.Url).First(); }F5 启动,我们来看一下效果:
//ChatGPT Image API文档地址 https://platform.openai.com/docs/api-reference/images //demo源码地址 https://github.com/ynanech/ChatGPT.Demo