HTTP 和 WebSocket API

鲜艺AI抠图提供了 HTTP 和 WebSocket API,如果你有开发能力,可以实现与任意第三方工具集成。

前提

使用接口,你需要先打开鲜艺 AI 抠图桌面端软件,接口能力由桌面端软件提供。

HTTP API

POST http://localhost:30092/rmbg

请求参数

名称位置类型必选说明
cropquerystring裁剪透明像素"true"|“false”
bodybodybinary二进制图片文件

返回结果

二进制图片或错误信息

WebSocket

ws://localhost:30092/ws

发送数据

ArrayBuffer,由 json 和二进制图片两部分合并而成

json:

{
  "action": "rmbg",
  "key": "随机字符串,用于关联请求与响应",
  "crop": "可选参数,是否裁剪透明像素,true|false"
}

binaryData: Uint8Array 图片二进制数据

发送数据封装示例代码

function combineDataForSending(json: object, binaryData: Uint8Array): Uint8Array {
  const jsonString = JSON.stringify(json);
  const jsonBytes = new TextEncoder().encode(jsonString);
  const jsonLength = new Uint32Array([jsonBytes.byteLength]);
  const combinedArray = new Uint8Array(jsonLength.byteLength + jsonBytes.byteLength + binaryData.byteLength);
  combinedArray.set(new Uint8Array(jsonLength.buffer), 0);
  combinedArray.set(jsonBytes, jsonLength.byteLength);
  combinedArray.set(binaryData, jsonLength.byteLength + jsonBytes.byteLength);
  return combinedArray;
}

接收数据

ArrayBuffer,由 json 和二进制图片封装, 需解封

json:

{
  "action": "rmbg_res",
  "key": "发送数据时的 key"
}

binaryData: Uint8Array 图片二进制数据

接收数据解封示例代码

function extractDataFromCombined(combinedData: Uint8Array): { json: any, binaryData: Uint8Array } {
  const jsonLengthView = new Uint32Array(combinedData.buffer, 0, 1);
  const jsonLength = jsonLengthView[0];
  const jsonBytes = combinedData.slice(4, 4 + jsonLength);
  const jsonString = new TextDecoder().decode(jsonBytes);
  const json = JSON.parse(jsonString);
  const binaryDataStartIndex = 4 + jsonLength;
  const binaryData = combinedData.slice(binaryDataStartIndex);
  return { json, binaryData };
}
软件著作权 2024SR1334669 号
©️ 2024-2024 鲜艺