前言
如何在自己的项目中添加ai扩图或图像扩展功能,在去年调研多个平台并实现该功能后,找到一个最简单解决方案。利用chartGPT的图像编辑API实现原始图像和提示的情况下创建编辑或扩展图像,实现效果如下图:
文档介绍
在APIFOX整理的OpenAI(ChatGPT)接口文档中可以看到接口/参数说明
文档地址:apifox.com/apidoc/proj…
接口/参数说明
| 字段 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| image | file | 必需 | 要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是方形的。如果未提供遮罩,图像必须具有透明度,将用作遮罩。 |
| mask | file | 可选 | 附加图像,其完全透明区域(例如,alpha 为零的区域)指示image应编辑的位置。必须是有效的 PNG 文件,小于 4MB,并且尺寸与原始image相同。 |
| prompt | string | 必需 | 所需图像的文本描述。最大长度为 1000 个字符。 |
| n | string | 可选 | 要生成的图像数。必须介于 1 和 10 之间。 |
| size | string | 可选 | 生成图像的大小。必须是256x256、512x512或 1024x1024之一。 |
| response_format | string | 可选 | 生成的图像返回的格式。必须是url或b64_json。 |
在介绍这个文档参数后需要注意以下几点:
- 国内服务器无法直接访问openAi接口,需要自己代理,或者找第三方代理转发的平台。
v1/images/edits这个接口是基于dall-e-2这个模型,部分第三方代理平台并不支持。- 上传的图片
image大小必须小于4m,并且根据需要生成内容的地方预留透明度,如果采用mask的方式则需要将图片分辨率尺寸调整小于1024x1024。 - 生成的图片格式必须是
256x256、512x512或1024x1024,如果上传图片格式不是等比例方形或者分辨率大于1024x1024那么生成出来的图片或许存在变形问题,后续需要单独处理,进行扩图、裁剪或提升分辨率。
代理服务
基于上面的介绍国内服务器无法直接访问openAi接口,这边整理一种使用腾讯云代理服务器访问openAi接口的方法:《腾讯云函数代理OpenAI》,这篇帖子通过购买国外的腾讯的云函数进行代理转发实现访问openAi接口,时间不长三分钟还介绍购买相关服务的成本,例如我购买的个人标准包,一年40块费用,且这个功能使用量不到且只服务于这个接口功能,选择的一种解决方式,当然也可以购买国外的服务器,这个会更加稳定且高效但相对于的成本也会增加不少。
openAI账号获得key
访问 openAI的接口肯定先申请token,有两种途径获取相关账号:
- 按照注册流程购买国外手机号进行注册进入API 开发者用户页面创建key.
- 去墙外相关平台购买已经创建好并且带$5月的成品号,需要注意账号类型。
注意:Openai 的用户体系分成两大类:ChatGPT 用户和API开发者用户,两个体系是相互独立的,用户名密码是一致的,但是访问入口和支付都是独立的:
关于如何创建账号相关教程实在太多了,下面列举其他大佬写的创建创建账号教程:
不管如何最终会进入到开发者用户申请获得key: API 开发者用户的登录入口是 platform.openai.com
获取key之后可以测试代理的url和key是否正常工作,完成则可以进行下面的流程。
实践案例
当我们完成上面的准备工作之后,了解这个接口相关参数,解决接口访问的难点接下来,需要针对导入图片进行处理。
图片处理
图片处理有两种具体实现方法有很多这里不详细介绍了,只是介绍一个解决思路:一种后端对图片上下左右四个边增加20%透明的内容区域。另一种前端处理,创建canvas画布大小设置1024x1024,根据用户图片进行等比例缩小并填充到画布中心并预留20%,得到图片最终效果如下图:
当如这是调接口可能会出现这样错误,所以需要将图片进行压缩到4MB以下大小才行。
处理完成后的图片大小和尺寸:
接口调用
图片处理完成后,就可以调用接口实现,这里需要主要输入的相关参数:model:dall-e-2这个必须选择,dall-e-3这个大模型是没有v1/images/edits这个接口。prompt会根据填写的内容生成效果也不一样,例如下面的两张图,第一张,prompt提示是:请补充完善图片周围的人,第二张,prompt提示是:请添加广告横幅
from-data接口参数示例:
model:dall-e-2
prompt:画面为火锅一部分,请在旁边添加菜品
n: 2
response_format:url
size:1024x1024
调用接口,会在返回的data中看url,这个即为生成的图片,如果两张图片不满足可以修改输出图片数量的参数。
最终效果
原始图片:
下面是生成出来的三张效果图对比原始图,生成效果其实还不错的,特别是中间那张。
成本估算
| 类型 | 成本 |
|---|---|
| 腾讯云服务器代理 | 40/年 |
| openAi账号注册 | 8元/$5额度 |
openAi账号注册费用主要用于购买国外手机号,总共费用不到50块,亲测可以生成几百张图片使用几个月没啥问题。
其他
下面列举测试过不支持图片扩展功能的第三方代理平台,但是可以用于文档对话或其他操作:
| 序号 | 站点名称 | gpt-3.5-turbo-api价格 | GPT4-api价格 | 访问地址 |
|---|---|---|---|---|
| 1. | 笔墨API | $0.0015/1K tokens | $0.03/1K tokens | 🔗 |
| 2. | OpenKEY | $0.0075/1K tokens | $0.48/1K tokens | 🔗 |
| 3. | Aikey | $0.015/1K tokens | $0.035/1K tokens | 🔗 |
| 4. | AISKT API聚合 | 未展示 | 未展示 | 🔗 |
| 5. | closeAI | $0.0015/1K tokens | $0.03/1K tokens | 🔗 |
| 6. | OhMyGPT | 官方价格的1.5倍 | 官方价格的1.5倍 | 🔗 |
| 7. | API2D | $0.002/1K tokens | $0.03/1K tokens | 🔗 |
| 8. | QuickChat API | 官方计费 tokens | 官方计费 tokens | 🔗 |
| 9 | 佩奇GPT | $0.001/1K tokens | $0.18/1K tokens | 🔗 |