@cloudraker/img-diff-js

Library to compare 2 images

Usage no npm install needed!

<script type="module">
  import cloudrakerImgDiffJs from 'https://cdn.skypack.dev/@cloudraker/img-diff-js';
</script>

README

img-diff-js

CircleCI Build Status Greenkeeper badge npm version License: MIT

:art: Node.js library to compare 2 images without native libs.

Actual Expected Difference
actual expected diff

Install

npm install img-diff-js
const { imgDiff } = require('img-diff-js');

imgDiff({
  actualFilename: 'example/actual.png',
  expectedFilename: 'example/expected.png',
  diffFilename: 'example/diff.png',
}).then(result => console.log(result));

API Usage

imgDiff(opt: ImgDiffOptions): Promise<ImgDiffResult>

Create image differential between two images.

ImgDiffOptions

{
  actualFilename: string;
  expectedFilename: string;
  diffFilename?: string;
  generateOnlyDiffFile?: boolean; // default false
  options?: {
    threshold?: number;   // default 0.1
    includeAA?: boolean;  // default false
  }
}
  • actualFilename - Required - Path to actual image file.
  • expectedFilename - Required - Path to expected image file.
  • diffFilename - Optional - Path to differential image file. If omitted, imgDiff does not output image file.
  • generateOnlyDiffFile - Optional - Generate only files with difference
  • options - Optional - An object to pass through pixelmatch.

ImgDiffResult

{
  width: number;
  height: number;
  imagesAreSame: boolean;
  diffCount: number;
}
  • width - Differential image's width.
  • height - Differential image's height.
  • imagesAreSame - It'll be true only if 2 images are same perfectly.
  • diffCount - The number of differential pixels.

Available format

The following codecs are available for input image files.

imgDiff detects the input image format from it's extension name. For example, if the input file name ends with ".jpeg", imgDiff attempts to decode in JPEG way regardless of the actual file format.

The output image format is PNG only.

Performance

case name img-diff-js image-difference image-diff
50 same dimension PNGs 936 msec 11018 msec 16539 msec
50 different dimension PNGs 715 msec 16077 msec 16639 msec
50 same dimension JPEGs 1076 msec 10910 msec 19078 msec

The above table was captured under Travis-CI. If you want the latest result, check the raw log.

Contribute

PR or issue is welcome :)

Setup

yarn

Test

yarn test

Run benchmark script

yarn run perf

License

MIT License. See LICENSE under this repository.