FacePlusPlus API client
A JavaScript SDK / API client for common FPP APIs, for example:
Usage
npm i faceplusplus-sdk
import { bHumanBodyDetectAPI } from "faceplusplus-sdk";
...
const result = await bHumanBodyDetectAPI({
return_attributes: 'gender,upper_body_cloth,lower_body_cloth',
image_file: '~/myimage.jpg', // see image_file note below!
})
Auth credentials
REQUIRED!
You can make a free account to get your API key and secret.
If credentials are not set correctly, the api client will throw an Error.
creds-fpp.json
Option 1: Create a creds-fpp.json
file in the app's process.cwd()
(root):
{
"api_key": "...",
"api_secret": "..."
}
configCreds
Option 2: Import configCreds
function to set your auth credentials:
import { configCreds } from "faceplusplus-sdk";
...
configCreds({
api_key: "...",
api_secret: "..."
});
QPS rate throttle
OPTIONAL!
You can configure a basic throttle to help maintain the QPS rate limits of your account. Import configQPS
function to set your throttle delay times:
import { configQPS } from "faceplusplus-sdk";
...
configQPS({
beforeCallDelaySeconds: 0, // default
afterCallDelaySeconds: 0, // default
});
-
beforeCallDelaySeconds
: Before the API call is made, start this timer delay.- Effective timer delay:
beforeCallDelaySeconds
-API_CALL_DURATION
- Effective timer delay:
-
afterCallDelaySeconds
: After the API call is made, start this timer delay.- Effective timer delay:
afterCallDelaySeconds
+API_CALL_DURATION
- Effective timer delay:
Note: API call will only return when all timers have expired.
APIs
-
bHumanBodyDetectAPI:
- image_file
- return_attributes
-
bHumanBodySegmentAPI:
- image_file
- return_grayscale
-
response:
.body_image
(A base64 encodedJPGPNG image)
-
fCompareAPI:
- image_file1
- image_file2
-
fDenseFacialLandmarkAPI:
- face_token
- image_file
- return_landmark
-
fDetectAPI:
- image_file
- return_landmark
- return_attributes
-
fFaceAnalyzeAPI:
- face_tokens
- return_landmark
- return_attributes
-
fSkinAnalyzeAPI:
- image_file
-
iMergeFaceAPI:
- template_file
- template_url
- merge_file
- merge_url
- merge_rate
-
response:
.result
(A base64 encoded JPG image, size of template image)
More info about face_token.
image_file
, etc
Input image files, eg. for Please use the peer dependency formdata-node
/ file-from-path
, for example:
import { anyAPIExample } from "faceplusplus-sdk";
import { fileFromPath } from "formdata-node/file-from-path";
...
const r = await anyAPIExample({
image_file: await fileFromPath(pathToImageFile),
});
Tip: How to write a base64 image result to a file (NodeJS)
A simple example:
import fs from "fs";
function saveB64ImageToFile(base64Data, filepath) {
const buffer = Buffer.from(base64Data, "base64");
fs.writeFileSync(filepath, buffer);
}
CLI scripts
If you git clone
this repo, there are npm scripts you can run that provide a command line interface to the library API client. See package.json
for a list of scripts available.
Notebooks
If you git clone
this repo, there are VS restbook notebooks you can run that provide a GUI to the API raw endpoints. See /notebooks
for a list of available restbooks.