This library implements the aHash, dHash and pHash image-hashing algorithms as described in this article.
It's based on this implementation but with a loader-abstraction for GD and Imagick support, added tests, and a benchmark.
To compare two images:
use Kodus\ImageHash\ImageHasher;
$hasher = new ImageHasher();
$a_hash = $hasher->pHash("path/to/image-a.jpg");
$b_hash = $hasher->pHash("path/to/image-b.jpg");
if ($hasher->getDistance($a_hash, $b_hash) <= 2) {
echo "same!";
} else {
echo "different.";
}
Substitute calls to pHash()
for aHash()
or dHash()
to use another algorithm, but note
that getDistance()
only makes sense for two hashes computed using the same algorithm.
Hashes are returned as a binary-mask string - use base_convert if you need a decimal or hex value.
To run the tests:
php test/test.php
To run the benchmark:
php test/benchmark.php
If you hack on this library, be sure to run the benchmark before/after making changes.