Sharp based implementation of perceptual hash (phash) algorithm described there.
Installation
yarn add sharp sharp-phash
# or
npm i sharp sharp-phashYou must install sharp yourself.
How to use
"use strict"; const fs = require("fs"); const Promise = require("bluebird"); const assert = require("assert"); const phash = require("sharp-phash"); const dist = require("sharp-phash/distance"); const img1 = fs.readFileSync("./Lenna.png"); const img2 = fs.readFileSync("./Lenna.jpg"); const img3 = fs.readFileSync("./Lenna-sepia.jpg"); Promise.all([phash(img1), phash(img2), phash(img3)]).then( ([hash1, hash2, hash3]) => { // hash returned is 64 characters length string with 0 and 1 only assert(dist(hash1, hash2) < 5); assert(dist(hash2, hash3) < 5); assert(dist(hash3, hash1) < 5); } );