NodeJS SDK
本SDK主要面向使用NodeJS的用户,自动签名并简化调用过程。下载以下文件,并另存为api.js
:
函数说明
.call(params)
调用API。返回值:Promise
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
params | Object | 无 | 调用参数,更多信息请查询API文档。其中的PublicKey 、PrivateKey 和Signature 这3个公共参数无需填写。 |
.localImg2Base64(path)
从本地获取图片或遮罩并转换为Base64编码格式。返回值:Promise
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
path | String | 无 | 图片或遮罩的本地路径。 |
.remoteImg2Base64(url)
远程获取图片或遮罩并转换为Base64编码格式。返回值:Promise
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
url | String | 无 | 图片或遮罩的链接地址。如果url并非以“https://”开头,本SDK会尝试自动修正。 |
.pollingTask(taskUID, interval, callback)
轮询一个任务。返回值:Promise
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
taskUID | String | 无 | 调用生成和修改类API后获得的任务ID。 |
interval | Int | 3000 | 非必要。轮询的时间间隔,单位为毫秒。 |
callback | Function | null | 非必要。轮训时的回调函数,该函数会返回一个Object ,包含了当前任务的详细信息。为了简化使用,如果没有设置interval,callback可直接作为第二个参数。 |
.setKeys(publicKey, privateKey)
设置调用API所需的公私钥。返回值:None
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
publicKey | String | 无 | 公钥,可在用户中心页面获得。 |
privateKey | String | 无 | 私钥,可在用户中心页面获得。 |
gateway | String | https://api.picpik.ai/ (opens in a new tab) | 非必要。API网关,如您是国内站用户,请修改为 https://api.picpikai.com/ 。如果url并非以“https://”开头,本SDK会尝试自动修正。 |
使用示例
示例:生成一只鸟的图片,并去除背景。
const api = require("./api");
// 设置调用API所需的公私钥。登陆官网后,可在用户中心页面找到您的密钥。
api.setKeys(
publicKey = "Your Public Key",
privateKey = "Your Private Key"
);
// 获取模型列表。生成图片时,需要指定一个主模型及其参数。与直接调用不同,本SDK在调用API时会自动填写“PublicKey”、“PrivateKey”和“Signature”这些公共参数。
api.call({
Action: "ListModels"
})
.then(data => {
// 选择模型列表中的一个模型,并使用该模型生成图片
let model = data.MainModels["PICPIK General"];
return api.call({
Action: "GenerateImages",
MainModel: model,
PositivePrompts: ["One Bird"],
})
})
.then(data => {
// 利用获得的task UID,轮训任务状态。
let taskUID = data.TaskUID;
return api.pollingTask(taskUID, details => {
console.log(details.Status);
});
})
.then(data => {
// 任务完成后,获得生成图片的URL并编码为Base64格式。
let imageURL = data.ImgList[0];
return api.remoteImg2Base64(imageURL);
})
.then(base64Img => {
// 去除背景
return api.call({
Action: "RemoveBackground",
RawImage: base64Img
});
})
.then(data => {
// 利用获得的task UID,轮训任务状态。
let taskUID = data.TaskUID;
return api.pollingTask(taskUID, details => {
console.log(details.Status);
});
})
.then(data => {
// 任务完成后,获得生成图片的URL
let imageURL = "https://" + data.ImgList[0];
console.log(imageURL);
})
.catch(error => {
// 捕获过程中可能发生的错误。
console.error(JSON.stringify(error));
});