HTTP 和 WebSocket API
鲜艺AI抠图提供了 HTTP 和 WebSocket API,如果你有开发能力,可以实现与任意第三方工具集成。
前提
使用接口,你需要先打开鲜艺 AI 抠图桌面端软件,接口能力由桌面端软件提供。
HTTP API
POST http://localhost:30092/rmbg
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
crop | query | string | 否 | 裁剪透明像素"true"|“false” |
body | body | binary | 是 | 二进制图片文件 |
返回结果
二进制图片或错误信息
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 鲜艺