imageoptim

Node.js wrapper for some images compression algorithms

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
imageoptim
3070.5.06 years ago9 years agoMinified + gzip package size for imageoptim in KB

Readme

image-optim Build Status Coverage Status Dependency Status devDependency Status
Node.js wrapper for image compression algorithms.
- Overview - API
- [imageOptim.optim](#imageoptimoptim)
- [imageOptim.lint](#imageoptimlint)
- [Exit code](#exit-code)
  - [SUCCESS](#imageoptimsuccess)
  - [CANT_COMPRESS](#imageoptimcant_compress)
  - [DOESNT_EXIST](#imageoptimdoesnt_exist)
- [Example](#example)
- CLI
- [Example](#example-1)

Types


Supporting of other types of images is coming soon.

Patches

You can view all the patches which are applied to the algorithms here.

Overview:

  • optipng.patch – adds to OptiPNG the ability to remove RGB components or transparent pixels in RGB+alpha images.

  • zopflipng.patch – makes Zopflipng work on Linux.

Install

$ npm install imageoptim

This command will install image-optim and all supported compression algorithms automatically. The installation of the compression algorithms is subscribed in script env-setup.

Usage

API

var imageOptim = require('imageoptim');

imageOptim.optim

Optimizes the given files.
@param {String} – a list of paths to files to optimize
@param
{Object} – options:

reporters {String} - reporters of the results. flat - writes the results to stdout, html - creates the HTML report of the results in file imageoptim-report.html (default: flat).
@returns
{Promise Object} – the information about optimized files:

[{ name: 'file.ext', savedBytes: 12345, exitCode: 0 }]

imageOptim.lint

Checks whether the given files can be optimized further.
@param
{String} – a list of paths to files to check
@param
{Object} – options:

tolerance {Number} – sets the measurement error in percentages (decimal < 1) or bytes (integer or decimal >= 1) (default: 0).
type | skope | description --- | --- | --- percentages | < 1 | The file will be considered to be optimized if the percentage of saved bytes after the compression is less than the specified value (0.880%, 0.011%, etc) bytes | >= 1 | The file will be considered to be optimized if the number of saved bytes after the compression is less than the specified value (2020 bytes, 100500100500 bytes, etc)
reporters {String} - reporters of the results. flat - writes the results to stdout, html - creates the HTML report of the results in file imageoptim-report.html (default: flat).
@returns
{Promise Object} – the information about linted files:

[{ name: 'file.ext', isOptimized: true, exitCode: 0 }]

Exit code

imageOptim.SUCCESS
If a file was processed without errors its exit code will be equal to 0.
imageOptim.CANTCOMPRESS
If a file can not be processed by one of the algorithms its exit code will be equal to 1.
imageOptim.DOESNTEXIST
If a file does not exist its exit code will be equal to 2.

Example

var imageOptim = require('imageoptim');

// optimization
imageOptim.optim(['1.png', '2.png'], { reporters: ['flat', 'html'] })
    .then(function (res) {
        console.log(res);
    })
    .done();

// linting
imageOptim.lint(['1.png', '2.png'], {
        tolerance: 0.08,
        // tolerance: 20,
        reporters: ['flat', 'html']
    })
    .then(function (res) {
        console.log(res);
    })
    .done();

CLI

$ imageoptim --help
Node.js wrapper for image compression algorithms

Usage:
  imageoptim [OPTIONS] [ARGS]

Options:
  -h, --help : Help
  -v, --version : Shows the version number
  -l, --lint : Lint mode
  -t TOLERANCE, --tolerance=TOLERANCE : sets the measurement error in percentages or bytes (default: 0)
  -r REPORTERS, --reporter=REPORTERS : flat or/and html (default: flat)

Arguments:
  FILES : Paths to files (required)

REMARK! More information about options lint and tolerance can be found in the API
.

Example

$ imageoptim path/to/file1 path/to/file2 --reporter=flat --reporter=html # optimization

$ imageoptim path/to/file --lint --tolerance=0.08 --reporter=flat --reporter=html # linting, tolerance is `8%`

$ imageoptim path/to/file --lint --tolerance=20 # linting, tolerance is `20 bytes`