matches-subimage

Lightweight library that finds matches of an image within another image, perfect for visual validation in testing scenarios. Heavily inspired by (read: blatantly copied some subroutines from) pixelmatch, and just like pixelmatch, its advantages are that it's fast and lightweight, with zero dependencies.

Usage no npm install needed!

<script type="module">
  import matchesSubimage from 'https://cdn.skypack.dev/matches-subimage';
</script>

README

matches-subimage

Lightweight library that finds matches of an image within another image, perfect for visual validation in testing scenarios. Heavily inspired by (read: blatantly copied some subroutines from) pixelmatch, and just like pixelmatch, its advantages are that it's fast and lightweight, with zero dependencies.

Usage demo:

const foundMatch = subImageMatch(img, subImg);

API

subImageMatch(img, subImg[, options])

  • img1, img2 — Image data of the images to compare (Buffer, Uint8Array or Uint8ClampedArray).
  • options is an object literal with only one property currently:
    • threshold — Matching threshold, ranges from 0 to 1. Smaller values make the comparison more sensitive. 0.1 by default.

Returns a boolean indicating whether or not a match has been found

Example usage

Node.js

const fs = require("fs");
const PNG = require("pngjs").PNG;
const subImageMatch = require("matches-subimage");

const img = PNG.sync.read(fs.readFileSync("image.png"));
const subImg = PNG.sync.read(fs.readFileSync("sub_image.png"));
subImageMatch(img1, img2, {threshold: 0.1});

Install

Install with NPM:

npm install matches-subimage

Changelog