SDKs
Nodejs

NodeJS SDK

本SDK主要面向使用NodeJS的用户,自动签名并简化调用过程。下载以下文件,并另存为api.js

函数说明

.call(params)

调用API。返回值:Promise

参数类型默认值说明
paramsObject调用参数,更多信息请查询API文档。其中的PublicKeyPrivateKeySignature这3个公共参数无需填写。

.localImg2Base64(path)

从本地获取图片或遮罩并转换为Base64编码格式。返回值:Promise

参数类型默认值说明
pathString图片或遮罩的本地路径。

.remoteImg2Base64(url)

远程获取图片或遮罩并转换为Base64编码格式。返回值:Promise

参数类型默认值说明
urlString图片或遮罩的链接地址。如果url并非以“https://”开头,本SDK会尝试自动修正。

.pollingTask(taskUID, interval, callback)

轮询一个任务。返回值:Promise

参数类型默认值说明
taskUIDString调用生成和修改类API后获得的任务ID。
intervalInt3000非必要。轮询的时间间隔,单位为毫秒。
callbackFunctionnull非必要。轮训时的回调函数,该函数会返回一个Object,包含了当前任务的详细信息。
为了简化使用,如果没有设置interval,callback可直接作为第二个参数。

.setKeys(publicKey, privateKey)

设置调用API所需的公私钥。返回值:None

参数类型默认值说明
publicKeyString公钥,可在用户中心页面获得。
privateKeyString私钥,可在用户中心页面获得。
gatewayStringhttps://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));
});