Pixelbin Core SDK helps you integrate Pixelbin with your Frontend JS Application.
npm install @pixelbin/core --save
// 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 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):
parameter |
type |
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 :
- Define an html file input element
<input type="file" id="fileInput" />
-
Generate the presignedUrl with the backend sdk. click here.
-
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);
Pixelbin provides url utilities to construct and deconstruct Pixelbin urls.
Deconstruct a pixelbin url
parameter |
description |
example |
pixelbinUrl (string) |
A valid pixelbin url |
https://cdn.pixelbin.io/v2/your-cloud-name/z-slug/t.resize(h:100,w:200)~t.flip()/path/to/image.jpeg |
Returns:
property |
description |
example |
cloudName (string) |
The cloudname extracted from the url |
your-cloud-name |
zone (string) |
6 character zone slug |
z-slug |
version (string) |
cdn api version |
v2 |
transformations (array) |
Extracted transformations from the url |
|
filePath |
Path to the file on Pixelbin storage |
/path/to/image.jpeg |
baseUrl (string) |
Base url |
https://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"
// }
Converts the extracted url obj to a Pixelbin url.
property |
description |
example |
cloudName (string) |
The cloudname extracted from the url |
your-cloud-name |
zone (string) |
6 character zone slug |
z-slug |
version (string) |
cdn api version |
v2 |
transformations (array) |
Extracted transformations from the url |
|
filePath |
Path to the file on Pixelbin storage |
/path/to/image.jpeg |
baseUrl (string) |
Base url |
https://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
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 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.
For a working example, refer here
List of supported transformations
1. resize
parameter |
type |
defaults |
height |
integer |
0 |
width |
integer |
0 |
fit |
enum : cover , contain , fill , inside , outside
|
cover |
background |
color |
000000 |
position |
enum : top , bottom , left , right , right_top , right_bottom , left_top , left_bottom , center
|
center |
algorithm |
enum : nearest , cubic , mitchell , lanczos2 , lanczos3
|
lanczos3 |
const t = resize({
height: 0,
width: 0,
fit: "cover",
background: "000000",
position: "center",
algorithm: "lanczos3",
});
2. compress
parameter |
type |
defaults |
quality |
integer |
80 |
const t = compress({
quality: 80,
});
3. extend
parameter |
type |
defaults |
top |
integer |
10 |
left |
integer |
10 |
bottom |
integer |
10 |
right |
integer |
10 |
background |
color |
000000 |
const t = extend({
top: 10,
left: 10,
bottom: 10,
right: 10,
background: "000000",
});
4. extract
parameter |
type |
defaults |
top |
integer |
10 |
left |
integer |
10 |
height |
integer |
50 |
width |
integer |
20 |
const t = extract({
top: 10,
left: 10,
height: 50,
width: 20,
});
5. trim
parameter |
type |
defaults |
threshold |
integer |
10 |
const t = trim({
threshold: 10,
});
6. rotate
parameter |
type |
defaults |
angle |
integer |
0 |
background |
color |
000000 |
const t = rotate({
angle: 0,
background: "000000",
});
7. flip
8. flop
9. sharpen
parameter |
type |
defaults |
sigma |
integer |
1 |
flat |
integer |
1 |
jagged |
integer |
2 |
const t = sharpen({
sigma: 1,
flat: 1,
jagged: 2,
});
10. median
parameter |
type |
defaults |
size |
integer |
3 |
const t = median({
size: 3,
});
11. blur
parameter |
type |
defaults |
sigma |
integer |
1 |
const t = blur({
sigma: 1,
});
12. flatten
parameter |
type |
defaults |
background |
color |
000000 |
const t = flatten({
background: "000000",
});
13. negate
14. normalise
15. linear
parameter |
type |
defaults |
a |
integer |
1 |
b |
integer |
0 |
const t = linear({
a: 1,
b: 0,
});
16. modulate
parameter |
type |
defaults |
brightness |
integer |
1 |
saturation |
integer |
1 |
hue |
integer |
90 |
const t = modulate({
brightness: 1,
saturation: 1,
hue: 90,
});
17. grey
18. tint
parameter |
type |
defaults |
color |
color |
000000 |
const t = tint({
color: "000000",
});
19. toFormat
parameter |
type |
defaults |
format |
enum : jpeg , png , webp
|
jpeg |
const t = toFormat({
format: "jpeg",
});
20. merge
parameter |
type |
defaults |
mode |
enum : overlay , underlay
|
overlay |
image |
file |
`` |
background |
color |
00000000 |
height |
integer |
0 |
width |
integer |
0 |
top |
integer |
0 |
left |
integer |
0 |
gravity |
enum : northwest , north , northeast , east , center , west , southwest , south , southeast , custom
|
center |
blend |
enum : 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 , exclusion
|
over |
tile |
boolean |
false |
const t = merge({
mode: "overlay",
image: "",
background: "00000000",
height: 0,
width: 0,
top: 0,
left: 0,
gravity: "center",
blend: "over",
tile: false,
});
1. bg
1. bg
parameter |
type |
defaults |
industryType |
enum : general , ecommerce
|
general |
const t = bg({
industryType: "general",
});
1. upscale
parameter |
type |
defaults |
type |
enum : 2x , 4x
|
2x |
const t = upscale({
type: "2x",
});
1. remove
1. remove
1. detectLabels
parameter |
type |
defaults |
maximumLabels |
integer |
5 |
minimumConfidence |
integer |
55 |
const t = detectLabels({
maximumLabels: 5,
minimumConfidence: 55,
});
2. moderation
parameter |
type |
defaults |
minimumConfidence |
integer |
55 |
const t = moderation({
minimumConfidence: 55,
});
1. detectLabels
parameter |
type |
defaults |
maximumLabels |
integer |
5 |
const t = detectLabels({
maximumLabels: 5,
});