imghash
Promise-based image perceptual hash calculation for node.
Installation
npm install imghash
Basic usage
const imghash = require("imghash");
const hash1 = await imghash.hash("./path/to/file");
console.log(hash1); // "f884c4d8d1193c07"
// Custom hex length and result in binary
const hash2 = await imghash.hash("./path/to/file", 4, "binary");
console.log(hash2); // "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 = await imghash.hash("./img1");
const hash2 = await imghash.hash("./img2");
const distance = leven(hash1, hash2);
console.log(`Distance between images is: ${distance}`);
if (distance <= 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 arepng
andjpeg
) orBuffer
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: