低成本实现ai扩图,图像扩展

1,022 阅读3分钟

前言

如何在自己的项目中添加ai扩图或图像扩展功能,在去年调研多个平台并实现该功能后,找到一个最简单解决方案。利用chartGPT的图像编辑API实现原始图像和提示的情况下创建编辑或扩展图像,实现效果如下图:

image.png

image.png

文档介绍

在APIFOX整理的OpenAI(ChatGPT)接口文档中可以看到接口/参数说明 文档地址:apifox.com/apidoc/proj… image.png

接口/参数说明

字段参数类型是否必填说明
imagefile 必需要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是方形的。如果未提供遮罩,图像必须具有透明度,将用作遮罩。
maskfile 可选附加图像,其完全透明区域(例如,alpha 为零的区域)指示image应编辑的位置。必须是有效的 PNG 文件,小于 4MB,并且尺寸与原始image相同。
promptstring必需所需图像的文本描述。最大长度为 1000 个字符。
nstring可选要生成的图像数。必须介于 1 和 10 之间。
sizestring可选生成图像的大小。必须是256x256512x512或 1024x1024之一。
response_formatstring可选生成的图像返回的格式。必须是urlb64_json

在介绍这个文档参数后需要注意以下几点:

  1. 国内服务器无法直接访问openAi接口,需要自己代理,或者找第三方代理转发的平台。
  2. v1/images/edits这个接口是基于dall-e-2这个模型,部分第三方代理平台并不支持。
  3. 上传的图片image大小必须小于4m,并且根据需要生成内容的地方预留透明度,如果采用mask的方式则需要将图片分辨率尺寸调整小于1024x1024
  4. 生成的图片格式必须是256x256512x512或 1024x1024,如果上传图片格式不是等比例方形或者分辨率大于1024x1024那么生成出来的图片或许存在变形问题,后续需要单独处理,进行扩图、裁剪或提升分辨率。

代理服务

基于上面的介绍国内服务器无法直接访问openAi接口,这边整理一种使用腾讯云代理服务器访问openAi接口的方法:《腾讯云函数代理OpenAI》,这篇帖子通过购买国外的腾讯的云函数进行代理转发实现访问openAi接口,时间不长三分钟还介绍购买相关服务的成本,例如我购买的个人标准包,一年40块费用,且这个功能使用量不到且只服务于这个接口功能,选择的一种解决方式,当然也可以购买国外的服务器,这个会更加稳定且高效但相对于的成本也会增加不少。

openAI账号获得key

访问 openAI的接口肯定先申请token,有两种途径获取相关账号:

  1. 按照注册流程购买国外手机号进行注册进入API 开发者用户页面创建key.
  2. 去墙外相关平台购买已经创建好并且带$5月的成品号,需要注意账号类型。

注意:Openai 的用户体系分成两大类:ChatGPT 用户API开发者用户,两个体系是相互独立的,用户名密码是一致的,但是访问入口和支付都是独立的

关于如何创建账号相关教程实在太多了,下面列举其他大佬写的创建创建账号教程:

  1. juejin.cn/post/717344…
  2. juejin.cn/post/729999…
  3. juejin.cn/post/722749…
  4. juejin.cn/post/734906…

不管如何最终会进入到开发者用户申请获得key: API 开发者用户的登录入口是 platform.openai.com

image.png

获取key之后可以测试代理的url和key是否正常工作,完成则可以进行下面的流程。

实践案例

当我们完成上面的准备工作之后,了解这个接口相关参数,解决接口访问的难点接下来,需要针对导入图片进行处理。

图片处理

图片处理有两种具体实现方法有很多这里不详细介绍了,只是介绍一个解决思路:一种后端对图片上下左右四个边增加20%透明的内容区域。另一种前端处理,创建canvas画布大小设置1024x1024,根据用户图片进行等比例缩小并填充到画布中心并预留20%,得到图片最终效果如下图:

image.png

当如这是调接口可能会出现这样错误,所以需要将图片进行压缩到4MB以下大小才行。

image.png

处理完成后的图片大小和尺寸: image.png

接口调用

图片处理完成后,就可以调用接口实现,这里需要主要输入的相关参数:model:dall-e-2这个必须选择,dall-e-3这个大模型是没有v1/images/edits这个接口。prompt会根据填写的内容生成效果也不一样,例如下面的两张图,第一张,prompt提示是:请补充完善图片周围的人,第二张,prompt提示是:请添加广告横幅

image.png image.png

from-data接口参数示例:

model:dall-e-2
prompt:画面为火锅一部分,请在旁边添加菜品
n: 2
response_format:url
size:1024x1024

调用接口,会在返回的data中看url,这个即为生成的图片,如果两张图片不满足可以修改输出图片数量的参数。 image.png

最终效果

原始图片:

hot4.png

下面是生成出来的三张效果图对比原始图,生成效果其实还不错的,特别是中间那张。

image.png image.png image.png

成本估算

类型成本
腾讯云服务器代理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🔗