NodeJS Image Squeezer
A simple npm package for image compression powered by FFMPEG.
Requirement(s)
-
Node.js 8.x.x up to latest.
-
Operating System: Windows or Linux.
-
FFMPEG Binaries or Executable File:
-
To get the latest static build for Linux: Linux FFMPEG Static Build
-
For Windows you can download it via this link: Windows FFMPEG Build
-
As of the moment MacOS is not supported.
-
To check the FFMPEG latest build or release please refer to this link: FFMPEG Main Download Link
-
-
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
.- Currently Github only support scoped npm packages, see: Publishing a package
Usage
FFMPEG
- Basic implementation using Vanilla/Common JavaScript:
// Require the main class of the NodeJS Image Squeezer.const ImageSqueezer = ; // Initialize the main class.const imgSqueezer = ; // Load the necessary requirements and validate// if the package fit for the current environment.imgSqueezer; // Set the default binaries file.imgSqueezer; // Provide the source file path of the desire image// that will be compress later on.imgSqueezer; // Provide the output file path of the compressed image.imgSqueezer; // (Optional) This will allow output file path as empty// and will use the source file path as the output file path.imgSqueezer; // (Optional) To adjust the compression level.// COMPRESSION_LEVEL_LOW = 30%// COMPRESSION_LEVEL_NORMAL = 70%// (Default) COMPRESSION_LEVEL_HIGH = 100%imgSqueezer; // Prepare all necessary commands before executing// the compression process.imgSqueezer; // Execute the image compression.// Please take note this is an async method.// return a Promise<boolean>.imgSqueezer;
- Below are the simple implementation using TypeScript:
; ; imgSqueezer.load; imgSqueezer.setBin'/path/to/ffmpeg';imgSqueezer.setSourceFilePath'/path/source-filename';imgSqueezer.setOutputFilePath'/path/output-filename';imgSqueezer.allowEmptyOutputFilePath;imgSqueezer.setCompressionLevelImageSqueezer.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 = ; const imgSqueezer = ; imgSqueezer;imgSqueezer;imgSqueezer;imgSqueezer; // (Optional) This will allow output file path as empty// and will use the source file path as the output file path.imgSqueezer; imgSqueezer; // Execute the jpeg progressive optimization.// Please take note this is an async method.// return a Promise<boolean>.imgSqueezer;
- Below are the simple implementation using TypeScript:
; ; 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.