Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

imghash-bbassi

bbhopesh6MIT0.0.3

Image perceptual hash calculation for node. Based on package imghash v0.0.7 but fixes that is waiting to go upstream.

perceptual, image, hash, phash, imgseek

readme

imghash Build Status npm version

Promise-based image perceptual hash calculation for node.

Installation

npm install imghash

Basic usage

const imghash = require('imghash');

imghash
  .hash('path/to/file')
  .then((hash) => {
    console.log(hash); // 'f884c4d8d1193c07'
  });

// Custom hex length and result in binary
imghash
  .hash('path/to/file', 4, 'binary')
  .then((hash) => {
    console.log(hash); // '1000100010000010'
  });

Finding similar images

To measure similarity between images you can use Hamming distance or Levenshtein Distance.

The following example uses the latter one:

const imghash = require('imghash');
const leven = require('leven');

const hash1 = imghash.hash('./img1');
const hash2 = imghash.hash('./img2');

Promise
  .all([hash1, hash2])
  .then((results) => {
    const dist = leven(results[0], results[1]);
    console.log(`Distance between images is: ${dist}`);
    if (dist <= 12) {
      console.log('Images are similar');
    } else {
      console.log('Images are NOT similar');
    }
  });

API

.hash(filepath[, bits][, format])

Returns: ES6 Promise, resolved returns hash string in specified format and length (eg. f884c4d8d1193c07)

Parameters:

  • filepath - path to the image (supported formats are png and jpeg) or Buffer
  • bits (optional) - hash length [default: 8]
  • format (optional) - output format [default: hex]

.hashRaw(data, bits)

Returns: hex hash

Parameters:

  • data - image data descriptor in form { width: [width], height: [height], data: [decoded image pixels] }
  • bits - hash length

.hexToBinary(s)

Returns: hex string, eg. f884c4d8d1193c07.

Parameters:

  • s - binary hash string eg. 1000100010000010

.binaryToHex(s)

Returns: hex string, eg. 1000100010000010.

Parameters:

  • s - hex hash string eg. f884c4d8d1193c07

Further reading

imghash takes advantage of block mean value based hashing method: