2.0.2 • Published 2 years ago

pixelbin-core-final v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Pixelbin Core SDK

Pixelbin Core SDK helps you integrate Pixelbin with your Frontend JS Application.

Installation

npm install  @pixelbin/core --save

Usage

Setup

// Import the Pixelbin class
import Pixelbin from "@pixelbin/core";

// Create your instance
const pixelbin = new Pixelbin({
    cloudName: "demo",
    zone: "default", // optional
});

Transform and Optimize Images

// Import transformations
import Pixelbin, { transformations } from "@pixelbin/core";

const EraseBg = transformations.EraseBg;
const Basic = transformations.Basic;

// Create a new instance. If you have't (see above for the details)
const pixelbin = new Pixelbin({
    /*...*/
});

// Create EraseBg.bg transformation
let t1 = EraseBg.bg();

// Create resize transformation
const t2 = Basic.resize({ height: 100, width: 100 });

// create a new image
const demoImage = pixelbin.image("path/to/image"); // File Path on Pixelbin

// Add the transformations to the image
demoImage.setTransformation(t1.pipe(t2));

// Get the image url
console.log(demoImage.getUrl());
// output
// https://cdn.pixelbin.io/v2/your-cloud-name/z-slug/erase.bg()~t.resize(h:100,w:100)/path/to/image

Add Pixelbin to HTML

Add the this distributable in a script tag along with axios

<script src="pixelbin.v2.0.0.js"></script>
// Pixelbin is available in the browser as `Pixelbin` on the window object
const pixelbin = new Pixelbin({ cloudName: "demo", zone: "default" });

// create an image with the pixelbin object
const image = pixelbin.image("demoImage.jpeg");

// create a transformation
let t = Pixelbin.transformations.Basic.resize({ height: 100, width: 100 });

// add Transformations to the image
image.setTransformation(t);

// get the url
image.getUrl();
// output
// https://cdn.pixelbin.io/v2/demo/default/t.resize(h:100,w:100)/demoImage.jpeg

Upload images to pixelbin

The SDK provides a upload utility to upload images directly from the browser with a presigned url.

upload(file, signedDetails):

parametertype
file (File)File to upload to Pixelbin
signedDetails (Object)signedDetails can be generated with the Pixelbin Backend SDK @pixelbin/admin.

returns: Promise

  • Resolves with no response on success.
  • Rejects with error on failure.

Example :

  1. Define an html file input element
<input type="file" id="fileInput" />
  1. Generate the presignedUrl with the backend sdk. click here.

  2. Use the response object as is with the upload api as shown below.

const fileInput = document.getElementById("fileInput");
// the signed url and fields can be generated and served with @pixelbin/admin

const handleFileInputEvent = function (e) {
    const file = e.target.files[0];
    Pixelbin.upload(file, signedDetails)
        .then(() => console.log("Uploaded Successfully"))
        .catch((err) => console.log("Error while uploading"));
};
fileInput.addEventListener("change", handleFileInputEvent);

Utilities

Pixelbin provides url utilities to construct and deconstruct Pixelbin urls.

urlToObj

Deconstruct a pixelbin url

parameterdescriptionexample
pixelbinUrl (string)A valid pixelbin urlhttps://cdn.pixelbin.io/v2/your-cloud-name/z-slug/t.resize(h:100,w:200)~t.flip()/path/to/image.jpeg

Returns:

propertydescriptionexample
cloudName (string)The cloudname extracted from the urlyour-cloud-name
zone (string)6 character zone slugz-slug
version (string)cdn api versionv2
transformations (array)Extracted transformations from the url
filePathPath to the file on Pixelbin storage/path/to/image.jpeg
baseUrl (string)Base urlhttps://cdn.pixelbin.io/

Example:

const pixelbinUrl =
    "https://cdn.pixelbin.io/v2/your-cloud-name/z-slug/t.resize(h:100,w:200)~t.flip()/path/to/image.jpeg";

const obj = Pixelbin.utils.urlToObj(pixelbinUrl);
// obj
// {
//     "cloudName": "your-cloud-name",
//     "zone": "z-slug",
//     "version": "v2",
//     "transformations": [
//         {
//             "plugin": "t",
//             "name": "resize",
//             "values": [
//                 {
//                     "key": "h",
//                     "value": "100"
//                 },
//                 {
//                     "key": "w",
//                     "value": "200"
//                 }
//             ]
//         },
//         {
//             "plugin": "t",
//             "name": "flip",
//         }
//     ],
//     "filePath": "path/to/image.jpeg",
//     "baseUrl": "https://cdn.pixelbin.io"
// }

objToUrl

Converts the extracted url obj to a Pixelbin url.

propertydescriptionexample
cloudName (string)The cloudname extracted from the urlyour-cloud-name
zone (string)6 character zone slugz-slug
version (string)cdn api versionv2
transformations (array)Extracted transformations from the url
filePathPath to the file on Pixelbin storage/path/to/image.jpeg
baseUrl (string)Base urlhttps://cdn.pixelbin.io/
const obj = {
    cloudName: "your-cloud-name",
    zone: "z-slug",
    version: "v2",
    transformations: [
        {
            plugin: "t",
            name: "resize",
            values: [
                {
                    key: "h",
                    value: "100",
                },
                {
                    key: "w",
                    value: "200",
                },
            ],
        },
        {
            plugin: "t",
            name: "flip",
        },
    ],
    filePath: "path/to/image.jpeg",
    baseUrl: "https://cdn.pixelbin.io",
};
const url = Pixelbin.utils.objToUrl(obj); // obj is as shown above
// url
// https://cdn.pixelbin.io/v2/your-cloud-name/z-slug/t.resize(h:100,w:200)~t.flip()/path/to/image.jpeg

Transformation

A transformation is an operation or a list of operations that can be performed on an image. Please refer list of supported transformations for details.

// import a resize transformation
import Pixelbin, { transformations } from "@pixelbin/core";

const { resize } = transformations.Basic;

// create the resize transformation
const t = resize({ height: 100, width: 100 });

Multiple transformations can be chained by using and on the created transformation object

// import a resize transformation
import Pixelbin, { transformations } from "@pixelbin/core";

const { resize, flip } = transformations.Basic;

// create the basic transformations
const t1 = resize({ height: 100, width: 100 });
const t2 = flip();
const t3 = t1.pipe(t2);

Image

Image class represents an image on Pixelbin.

//To create an Image, call image method on the pixelbin object;
const image = pixelbin.image("path/to/image");

Transformations can be set on an image by using setTransformation on the image object.

image.setTransformation(t);

To get the url of the image with the applied transformations, use the getUrl on the image object.

image.getUrl();

For a working example, refer here

List of supported transformations

1. Basic

Supported Configuration

parametertypedefaults
heightinteger0
widthinteger0
fitenum : cover , contain , fill , inside , outsidecover
backgroundcolor000000
positionenum : top , bottom , left , right , right_top , right_bottom , left_top , left_bottom , centercenter
algorithmenum : nearest , cubic , mitchell , lanczos2 , lanczos3lanczos3

Usage Example

const t = resize({
    height: 0,
    width: 0,
    fit: "cover",
    background: "000000",
    position: "center",
    algorithm: "lanczos3",
});

Supported Configuration

parametertypedefaults
qualityinteger80

Usage Example

const t = compress({
    quality: 80,
});

Supported Configuration

parametertypedefaults
topinteger10
leftinteger10
bottominteger10
rightinteger10
backgroundcolor000000

Usage Example

const t = extend({
    top: 10,
    left: 10,
    bottom: 10,
    right: 10,
    background: "000000",
});

Supported Configuration

parametertypedefaults
topinteger10
leftinteger10
heightinteger50
widthinteger20

Usage Example

const t = extract({
    top: 10,
    left: 10,
    height: 50,
    width: 20,
});

Supported Configuration

parametertypedefaults
thresholdinteger10

Usage Example

const t = trim({
    threshold: 10,
});

Supported Configuration

parametertypedefaults
angleinteger0
backgroundcolor000000

Usage Example

const t = rotate({
    angle: 0,
    background: "000000",
});

Usage Example

const t = flip({});

Usage Example

const t = flop({});

Supported Configuration

parametertypedefaults
sigmainteger1
flatinteger1
jaggedinteger2

Usage Example

const t = sharpen({
    sigma: 1,
    flat: 1,
    jagged: 2,
});

Supported Configuration

parametertypedefaults
sizeinteger3

Usage Example

const t = median({
    size: 3,
});

Supported Configuration

parametertypedefaults
sigmainteger1

Usage Example

const t = blur({
    sigma: 1,
});

Supported Configuration

parametertypedefaults
backgroundcolor000000

Usage Example

const t = flatten({
    background: "000000",
});

Usage Example

const t = negate({});

Usage Example

const t = normalise({});

Supported Configuration

parametertypedefaults
ainteger1
binteger0

Usage Example

const t = linear({
    a: 1,
    b: 0,
});

Supported Configuration

parametertypedefaults
brightnessinteger1
saturationinteger1
hueinteger90

Usage Example

const t = modulate({
    brightness: 1,
    saturation: 1,
    hue: 90,
});

Usage Example

const t = grey({});

Supported Configuration

parametertypedefaults
colorcolor000000

Usage Example

const t = tint({
    color: "000000",
});

Supported Configuration

parametertypedefaults
formatenum : jpeg , png , webpjpeg

Usage Example

const t = toFormat({
    format: "jpeg",
});

Supported Configuration

parametertypedefaults
modeenum : overlay , underlayoverlay
imagefile
backgroundcolor00000000
heightinteger0
widthinteger0
topinteger0
leftinteger0
gravityenum : northwest , north , northeast , east , center , west , southwest , south , southeast , customcenter
blendenum : over , in , out , atop , dest , dest-over , dest-in , dest-out , dest-atop , xor , add , saturate , multiply , screen , overlay , darken , lighten , colour-dodge , color-dodge , colour-burn , color-burn , hard-light , soft-light , difference , exclusionover
tilebooleanfalse

Usage Example

const t = merge({
    mode: "overlay",
    image: "",
    background: "00000000",
    height: 0,
    width: 0,
    top: 0,
    left: 0,
    gravity: "center",
    blend: "over",
    tile: false,
});

2. RemoveBG

Usage Example

const t = bg({});

3. EraseBG

Supported Configuration

parametertypedefaults
industryTypeenum : general , ecommercegeneral

Usage Example

const t = bg({
    industryType: "general",
});

4. SuperResolution

Supported Configuration

parametertypedefaults
typeenum : 2x , 4x2x

Usage Example

const t = upscale({
    type: "2x",
});

5. ArtifactRemoval

Usage Example

const t = remove({});

6. WatermarkRemoval

Usage Example

const t = remove({});

7. AWSRekognition

Supported Configuration

parametertypedefaults
maximumLabelsinteger5
minimumConfidenceinteger55

Usage Example

const t = detectLabels({
    maximumLabels: 5,
    minimumConfidence: 55,
});

Supported Configuration

parametertypedefaults
minimumConfidenceinteger55

Usage Example

const t = moderation({
    minimumConfidence: 55,
});

8. GoogleVision

Supported Configuration

parametertypedefaults
maximumLabelsinteger5

Usage Example

const t = detectLabels({
    maximumLabels: 5,
});