npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

removd

v1.1.1

Published

automatic ai cut outs of people, products and cars with remove.bg service

Downloads

25

Readme

removd

NPM version Downloads CircleCI

Automatic ai cut outs of people, products and cars with remove.bg service.

splash

Requirements

API key from remove.bg service

Installation

npm i removd

Examples

Multiple examples can be located in examples directory

Usage

Images can be processed using file, url and base64 workflows. Balance and subscription details can be retrieved using account workflow.

removd.file

File workflow allows to upload files and save its outcome. Available options:

  • source required (string || array) - source filename to be forwarded for processing. Can be either single file or array of files (.png, .jpg, .jpeg files are supported).
  • glob optional (boolean) - glob patterns can be used to match files in multiple directories.
  • size optional (string) - can be set to small, medium, hd, 4k, auto. If omitted image will be automatically recognised and correct size option will be assigned.
  • detect optional (string) - can be set to person, product, car, auto. If omitted image will be automatically recognised.
  • channels optional (string) - can be set to rgba, alpha. If omitted defaults to rgba as RGB color corrections is used for highest quality.
  • background optional (string) - can be set to hex color code RGB, RGBA, RRGGBB, RRGGBBAA e.g. 81d4fa77 or rgba colors (R, G, B), (R, G, B, A), rgba(R, G, B, A) e.g. rgba(197, 127, 73, .5) or color name e.g. red, green etc. If omitted defaults to fully transparent hex.
  • format optional (string) - can be set to auto, png, jpg format. If omitted defaults to PNG format if transparent regions exists, otherwise JPEG.
  • destination optional (string) - directory where final image will be saved. Can be either path to directory or path to filename. If directory specyfied source filename will be used for saved outcome. If filename specyfied all processed images would be saved with it. If file already exists new file will be suffixed with nine character short id (defaults to source image directory).
  • deleteOriginal optional (boolean) - source image can be deleted after outcome returned back and saved (defaults to false).
  • progress optional (boolean) - track progress of processed images when source contains more then single item (defaults to false).
  • preserve optional (boolean) - upscale image to original dimensions if it has been downscaled previously due to being over 10 megapixels limit (defaults to false).
  • apikey optional (string) - service api key (defaults to REMOVD_API_KEY env veriable).

Basic file usage

const removd = require('removd');

(async () => {

    const done = await removd.file({
        source: '/directory/christopher-campbell-28567-unsplash-400x267.jpg'
    });

})();

Response done (object) will be similar to:

  {
    charged: 1,
    size: 'small',
    duration: '211 ms',
    dimensions: '400x267',
    destination: '/directory/christopher-campbell-28567-unsplash-400x267.png',
    detected: 'person',
    preserved: true,
    resized: false
  }
  • charged - amout of credits cherged by service to process image
  • size - size set to process image
  • duration - time it took to process the image
  • dimensions - dimanesions of the image
  • destination - directory where outcome image has been saved to
  • detected - outcome of the detection process
  • preserved - if original image dimensions has been preserved
  • resized - if image has been resized or not during processing

Advanced file usage

await removd.file({
    deleteOriginal: true,
    channels: 'alpha',
    detect: 'person',
    format: 'jpg',
    destination: '/new-directory/christopher-campbell.png',
    source: [
        '/directory/christopher-campbell-28567-unsplash-400x267.jpg',
        '/directory/christopher-campbell-28567-unsplash-2400x1600.jpg'
    ]
});

Response (array) will be similar to:

[
  {
    charged: 1,
    size: 'small',
    duration: '211 ms',
    dimensions: '400x267',
    destination: '/new-directory/christopher-campbell.jpeg',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 5,
    size: 'hd',
    duration: '371 ms',
    dimensions: '2400x1600',
    destination: '/new-directory/christopher-campbell-23TplPdSD.jpeg',
    detected: 'person',
    preserved: true,
    resized: false
  }
]

If glob enabled glob patterns can be used in the source array to match images sent for processing:

await removd.file({
    glob: true,
    destination: '/new-directory/',
    background: 'rgba(111, 98, 199, 0.51)',
    source: [
        '/initial-directory/*.jpg',
        '/directory/christopher-campbell-28567-unsplash-2400x1600.jpg'
    ]
});

Response (array) will be similar to:

[
  {
    charged: 8,
    size: '4k',
    duration: '683 ms',
    dimensions: '3750x2500',
    destination: '/new-directory/christopher-campbell-28567-unsplash-3750x2500.png',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 3,
    size: 'medium',
    duration: '111 ms',
    dimensions: '1500x1000',
    destination: '/new-directory/christopher-campbell-28567-unsplash-1500x1000.png',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 5,
    size: 'hd',
    duration: '371 ms',
    dimensions: '2400x1600',
    destination: '/new-directory/christopher-campbell-28567-unsplash-2400x1600.png',
    detected: 'person',
    preserved: true,
    resized: false
  }
]

To preserve image dimensions when image is larger then service limit of 10 megapixels enable preserve option:

await removd.file({
    preserve: true,
    source: '/directory/christopher-campbell-28567-unsplash-5184x3456.jpg'
});

Response (object) will be similar to:

  {
    charged: 8,
    size: '4k',
    duration: '611 ms',
    dimensions: '5184x3456',
    destination: '/directory/christopher-campbell-28567-unsplash-5184x3456.png',
    detected: 'person',
    preserved: true,
    resized: true
  }

To track progress of processed images enable progress option then initialise batch to start processing:

  const batch = await removd.file({
      glob: true,
      progress: true,
      destination: '/new-directory/',
      source: [
        '/initial-directory/*.jpg',
        '/directory/christopher-campbell-28567-unsplash-2400x1600.jpg'
      ]
  });

  const files = batch.files;

  batch.progress.on('item', item => {});

  const done = await batch.init();

Response files (array) will be similar to:

[
  '/initial-directory/christopher-campbell-28567-unsplash-1500x1000.jpg',
  '/initial-directory/christopher-campbell-28567-unsplash-3750x2500.jpg',
  '/directory/christopher-campbell-28567-unsplash-2400x1600.jpg'
]

Response done (array) will be similar to:

[
  {
    charged: 8,
    size: '4k',
    duration: '683 ms',
    dimensions: '3750x2500',
    destination: '/new-directory/christopher-campbell-28567-unsplash-3750x2500.png',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 3,
    size: 'medium',
    duration: '111 ms',
    dimensions: '1500x1000',
    destination: '/new-directory/christopher-campbell-28567-unsplash-1500x1000.png',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 5,
    size: 'hd',
    duration: '371 ms',
    dimensions: '2400x1600',
    destination: '/new-directory/christopher-campbell-28567-unsplash-2400x1600.png',
    detected: 'person',
    preserved: true,
    resized: false
  }
]

removd.url

Url workflow allows to upload images available via url and save its outcome. Available options:

  • source required (string || array) - source url to be forwarded for processing. Can be either single url or array of urls.
  • detect optional (string) - can be set to person, product, car, auto. If omitted image will be automatically recognised.
  • channels optional (string) - can be set to rgba, alpha. If omitted defaults to rgba as RGB color corrections is used for highest quality.
  • background optional (string) - can be set to hex color code RGB, RGBA, RRGGBB, RRGGBBAA e.g. 81d4fa77 or rgba colors (R, G, B), (R, G, B, A), rgba(R, G, B, A) e.g. rgba(197, 127, 73, .5) or color name e.g. red, green etc. If omitted defaults to fully transparent hex.
  • format optional (string) - can be set to auto, png, jpg format. If omitted defaults to PNG format if transparent regions exists, otherwise JPEG.
  • destination required (string) - directory where final image will be saved. Can be either path to directory or path to filename. If directory specyfied source url filename will be used for saved outcome. If filename specyfied all processed images would be saved with it. If file already exists new file will be suffixed with nine character short id.
  • size optional (string) - can be set to small, medium, hd, 4k, auto. If omitted url image will be automatically recognised and correct size option will be assigned.
  • progress optional (boolean) - track progress of processed images when source contains more then single item (defaults to false).
  • preserve optional (boolean) - upscale image to original dimensions if it has been downscaled previously due to being over 10 megapixels limit (defaults to false).
  • apikey optional (string) - service api key (defaults to REMOVD_API_KEY env veriable)

Basic url usage

const removd = require('removd');

(async () => {

    const done = await removd.url({
        destination: '/directory/',
        source: 'https://images.unsplash.com/photo-1504455583697-3a9b04be6397?w=400&q=80'
    });

})();

Response done (object) will be similar to:

  {
    charged: 1,
    size: 'small',
    duration: '211 ms',
    dimensions: '400x267',
    destination: '/directory/photo-1504455583697-3a9b04be6397.png',
    detected: 'person',
    preserved: true,
    resized: false
  }
  • charged - amout of credits cherged by service to process image
  • size - size set to process image
  • duration - time it took to process the image
  • dimensions - dimanesions of the image
  • destination - directory where outcome image has been saved to
  • detected - outcome of the detection process
  • preserved - if original image dimensions has been preserved
  • resized - if image has been resized or not during processing

Advanced url usage

await removd.url({
    detect: 'person',
    format: 'jpg',
    background: 'red',
    destination: '/new-directory/',
    source: [
        'https://images.unsplash.com/photo-1504455583697-3a9b04be6397?w=400&q=80',
        'https://images.unsplash.com/photo-1504455583697-3a9b04be6397?w=2400&q=80'
    ]
});

Response (array) will be similar to:

[
  {
    charged: 1,
    size: 'small',
    duration: '211 ms',
    dimensions: '400x267',
    destination: '/new-directory/photo-1504455583697-3a9b04be6397l.jpeg',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 5,
    size: 'hd',
    duration: '371 ms',
    dimensions: '2400x1600',
    destination: '/new-directory/photo-1504455583697-3a9b04be6397l-2FF3lddS1.jpeg',
    detected: 'person',
    preserved: true,
    resized: false
  }
]

removd.base64

Base64 workflow allows to upload images, base64 and base64url encoded txt files and save its outcome. Available options:

  • source required (string || array) - source filename to be forwarded for processing. Can be either single file or array of files (.png, .jpg, .jpeg, .txt files are supported).
  • glob optional (boolean) - glob patterns can be used to match files in multiple directories.
  • size optional (string) - can be set to small, medium, hd, 4k, auto. If omitted image will be automatically recognised and correct size option will be assigned.
  • detect optional (string) - can be set to person, product, car, auto. If omitted image will be automatically recognised.
  • channels optional (string) - can be set to rgba, alpha. If omitted defaults to rgba as RGB color corrections is used for highest quality.
  • background optional (string) - can be set to hex color code RGB, RGBA, RRGGBB, RRGGBBAA e.g. 81d4fa77 or rgba colors (R, G, B), (R, G, B, A), rgba(R, G, B, A) e.g. rgba(197, 127, 73, .5) or color name e.g. red, green etc. If omitted defaults to fully transparent hex.
  • format optional (string) - can be set to auto, png, jpg format. If omitted defaults to PNG format if transparent regions exists, otherwise JPEG.
  • destination optional (string) - directory where final image will be saved. Can be either path to directory or path to filename. If directory specyfied source filename will be used for saved outcome. If filename specyfied all processed images would be saved with it. If file already exists new file will be suffixed with nine character short id (defaults to source image directory).
  • deleteOriginal optional (boolean) - source image can be deleted after outcome returned back and saved (defaults to false).
  • toImage optional (boolean) - if source image is a base64 or base64url encoded text file processed outcome can be saved as an image (defaults to false).
  • progress optional (boolean) - track progress of processed images when source contains more then single item (defaults to false).
  • preserve optional (boolean) - upscale image to original dimensions if it has been downscaled previously due to being over 10 megapixels limit (defaults to false).
  • apikey optional (string) - service api key (defaults to REMOVD_API_KEY env veriable)

Basic base64 usage

const removd = require('removd');

(async () => {

    const done = await removd.base64({
        source: '/directory/christopher-campbell-28567-unsplash-400x267.txt'
    });

})();

Response done (object) will be similar to:

  {
    charged: 1,
    size: 'small',
    duration: '211 ms',
    dimensions: '400x267',
    destination: '/directory/christopher-campbell-28567-unsplash-400x267-g35fgj1Sp.txt',
    detected: 'person',
    preserved: true,
    resized: false
  }
  • charged - amout of credits cherged by service to process image
  • size - size set to process image
  • duration - time it took to process the image
  • dimensions - dimanesions of the image
  • destination - directory where outcome image has been saved to
  • detected - outcome of the detection process
  • preserved - if original image dimensions has been preserved
  • resized - if image has been resized or not during processing

Advanced base64 usage

await removd.base64({
    toImage: true,
    destination: '/new-directory/christopher-campbell.png',
    background: '00afff1f',
    source: [
        '/directory/christopher-campbell-28567-unsplash-400x267.jpg',
        '/directory/christopher-campbell-28567-unsplash-2400x1600.txt'
    ]
});

Response (array) will be similar to:

[
  {
    charged: 1,
    size: 'small',
    duration: '211 ms',
    dimensions: '400x267',
    destination: '/new-directory/christopher-campbell.png',
    detected: 'person',
    preserved: true,
    resized: false
  },
  {
    charged: 5,
    size: 'hd',
    duration: '371 ms',
    dimensions: '2400x1600',
    destination: '/new-directory/christopher-campbell-56T11Ptk3.png',
    detected: 'person',
    preserved: true,
    resized: false
  }
]

removd.account

Account workflow allows to retrieve details of current credit balance, number of free API calls and status of existing subscriptions. Balance changes may be delayed by several seconds.

Basic account usage

const removd = require('removd');

(async () => {

    const done = await removd.account();

    console.dir(done);

})();

Response (object) will be similar to:

  {
    credits: {
      total: 200,
      subscription: 150,
      payg: 50
    },
    api: {
      free_calls: 50,
      sizes: 'all'
    }
  }

Errors

All erros are resolved and fallow similar convention:

const removd = require('removd');

(async () => {

    const done = await removd.file({
        source: '/directory/christopher-campbell-28567-unsplash-400x267.bmp'
    });

})();

Response done (object) will be similar to:

  {
    error: 'Unsupported file format',
    source: '/directory/christopher-campbell-28567-unsplash-400x267.bmp'
  }

Enviroment variables

To limit batch processing use REMOVD_BATCH_LIMIT (defaults to cpu count).

REMOVD_BATCH_LIMIT=2

Tests

To run all available tests against previously recorded mocks

npm test

To record mocks either remove fixtures or force record with NOCK_RECORD

NOCK_RECORD=true npm test

As record is done against actual API endoints you'll be charged relevant amount of credits per test sequence.

| Workflow | Credits | |------|--------:| |file|109| |base64|101| |url|97| |account|0|

In total you'd be charged 307 credits for all available tests.

License

The MIT License (MIT). Please see license file for more information.