Skip to content
An image diffing library using FFmpeg. Creates an image showing perceptual differences and returns SSIM data.
JavaScript Dockerfile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
output
samples
.dockerignore
.gitignore
Dockerfile
LICENSE.txt
README.md
docker-compose.yml
index.d.ts
index.js
index.test.js
package-lock.json
package.json
tsconfig.d.json
tsconfig.json

README.md

FFmpeg Image Diff

A NodeJS image diffing library using FFmpeg.
Creates an image showing perceptual differences and returns SSIM data.

Contents

Requirements

This is a thin wrapper around FFmpeg and has no other dependencies.

Install

npm install ffmpeg-image-diff

Usage

Displaying SSIM data only:

const imgDiff = require('ffmpeg-image-diff')

imgDiff(
  referenceImage, // e.g. 'test/lenna.png'
  comparisonImage // e.g. 'test/lenna-edit.png'
)
  .then(ssim => {
    // Sample output: { R: 0.990149, G: 0.991289, B: 0.990579, All: 0.990672 }
    console.log(ssim)
  })
  .catch(error => {
    console.error(error)
  })

Creating a differential image with default options:

const imgDiff = require('ffmpeg-image-diff')

imgDiff(
  referenceImage, // e.g. 'test/lenna.png'
  comparisonImage, // e.g. 'test/lenna-edit.png'
  outputImage, // e.g. 'test/out.png', overwrites an existing file
  {
    ssim: true, // true or false
    similarity: 0.01, // 1.0 - 0.01
    blend: 1.0, // 1.0 - 0.0
    opacity: 0.1, // 1.0 - 0.0
    color: 'magenta' // magenta, yellow, cyan, red green, blue or ''
  }
)
  .then(ssim => {
    // Sample output: { R: 0.990149, G: 0.991289, B: 0.990579, All: 0.990672 }
    console.log(ssim)
  })
  .catch(error => {
    console.error(error)
  })

Options

ssim

If set to false, disables SSIM calculation.
Default: true

similarity

Defines the threshold to identify image differences.
0.01 matches slight differences, while 1.0 only matches stark contrast.
Range: 1.0 - 0.01
Default: 0.01

blend

Blend percentage for the differential pixels.
Higher values result in semi-transparent pixels, with a higher transparency the more similar the pixels color is to the original color.
Range: 1.0 - 0.0
Default: 1.0

opacity

Opacity of the reference image as backdrop for the differential image.
Higher values result in a more opaque background image.
Range: 1.0 - 0.0
Default: 0.1

color

The color balance of the differential pixels.
An empty string displays the default differential pixels.
Set: ['magenta', 'yellow', 'cyan', 'red', 'green', 'blue', '']
Default: 'magenta'

Samples

Reference image

Lenna

Comparison image

Lenna Edit

Output image

Lenna Diff

Testing

  1. Start Docker.
  2. Install development dependencies:
    npm install
  3. Run the tests:
    npm test

License

Released under the MIT license.

Author

Sebastian Tschan

You can’t perform that action at this time.