Skip to content

A simple npm package for image compression powered by FFMPEG.

License

Notifications You must be signed in to change notification settings

LordDashMe/nodejs-image-squeezer

Repository files navigation

NodeJS Image Squeezer

A simple npm package for image compression powered by FFMPEG.

Coverage Status NPM version

Requirement(s)

  • Node.js 8.x.x up to latest.

  • Operating System: Windows or Linux.

  • FFMPEG Binaries or Executable File:

  • Other Feature(s):

    • ImageMagick:

      • To use the "ProressiveJPEG" class this require the ImageMagick package.

      • To get the latest version ImageMagick Download Link

Install

NPM

  • Use command npm install nodejs-image-squeezer --save.

Github Package

  • Use command npm install @lorddashme/nodejs-image-squeezer.

Usage

FFMPEG

  • Basic implementation using Vanilla/Common JavaScript:
// Require the main class of the NodeJS Image Squeezer.
const ImageSqueezer = require('nodejs-image-squeezer');

// Initialize the main class.
const imgSqueezer = new ImageSqueezer.FFMPEGComppresion();

// Load the necessary requirements and validate
// if the package fit for the current environment.
imgSqueezer.load();

// Set the default binaries file.
imgSqueezer.setBin('/path/to/ffmpeg');

// Provide the source file path of the desire image
// that will be compress later on.
imgSqueezer.setSourceFilePath('/path/source-filename');

// Provide the output file path of the compressed image.
imgSqueezer.setOutputFilePath('/path/output-filename');

// (Optional) This will allow output file path as empty
// and will use the source file path as the output file path.
imgSqueezer.allowEmptyOutputFilePath();

// (Optional) To adjust the compression level.
// COMPRESSION_LEVEL_LOW = 30%
// COMPRESSION_LEVEL_NORMAL = 70%
// (Default) COMPRESSION_LEVEL_HIGH = 100%
imgSqueezer.setCompressionLevel(ImageSqueezer.FFMPEGComppresion.COMPRESSION_LEVEL_NORMAL);

// Prepare all necessary commands before executing
// the compression process.
imgSqueezer.build();

// Execute the image compression.
// Please take note this is an async method.
// return a Promise<boolean>.
imgSqueezer.compress();
  • Below are the simple implementation using TypeScript:
import ImageSqueezer from 'nodejs-image-squeezer';

const imgSqueezer = new ImageSqueezer.FFMPEGComppresion();

imgSqueezer.load();

imgSqueezer.setBin('/path/to/ffmpeg');
imgSqueezer.setSourceFilePath('/path/source-filename');
imgSqueezer.setOutputFilePath('/path/output-filename');
imgSqueezer.allowEmptyOutputFilePath();
imgSqueezer.setCompressionLevel(ImageSqueezer.FFMPEGComppresion.COMPRESSION_LEVEL_NORMAL);
imgSqueezer.build();
imgSqueezer.compress();

JPEG Progressive

  • Note: This function will only work for JPEG format.

  • Basic implementation without using superset libraries for Vanilla/Common JavaScript:

const ImageSqueezer = require('nodejs-image-squeezer');

const imgSqueezer = new ImageSqueezer.ProgressiveJPEG();

imgSqueezer.load();
imgSqueezer.setBin('/path/to/convert');
imgSqueezer.setSourceFilePath('/path/source-filename');
imgSqueezer.setOutputFilePath('/path/output-filename');

// (Optional) This will allow output file path as empty
// and will use the source file path as the output file path.
imgSqueezer.allowEmptyOutputFilePath();

imgSqueezer.build();

// Execute the jpeg progressive optimization.
// Please take note this is an async method.
// return a Promise<boolean>.
imgSqueezer.compress();
  • Below are the simple implementation using TypeScript:
import ImageSqueezer from 'nodejs-image-squeezer';

const imgSqueezer = new ImageSqueezer.ProgressiveJPEG();

imgSqueezer.load();
imgSqueezer.setBin('/path/to/convert');
imgSqueezer.setSourceFilePath('/path/source-filename');
imgSqueezer.setOutputFilePath('/path/output-filename');
imgSqueezer.allowEmptyOutputFilePath();
imgSqueezer.build();
imgSqueezer.compress();

License

This package is open-sourced software licensed under the MIT license.