1. Go to this page and download the library: Download legitphp/hash-money library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
legitphp / hash-money example snippets
use LegitPHP\HashMoney\PerceptualHash;
use LegitPHP\HashMoney\DHash;
use LegitPHP\HashMoney\ColorHistogramHash;
use LegitPHP\HashMoney\MashedHash;
// Generate a perceptual hash
$pHash = PerceptualHash::hashFromFile('/path/to/image.jpg');
echo $pHash->toHex(); // e.g., "f0e1d2c3b4a59687"
// Generate a difference hash
$dHash = DHash::hashFromFile('/path/to/image.jpg');
echo $dHash->toBinary(); // e.g., "1010101100110011..."
// Generate a color histogram hash
$colorHash = ColorHistogramHash::hashFromFile('/path/to/image.jpg');
echo $colorHash->toHex(); // e.g., "a1b2c3d4e5f6g7h8"
// Generate a MashedHash (comprehensive fingerprint)
$mHash = MashedHash::hashFromFile('/path/to/image.jpg');
echo $mHash->toHex(); // e.g., "1cf0e2a3b4596d87"
// Compare images
$hash1 = PerceptualHash::hashFromFile('/path/to/image1.jpg');
$hash2 = PerceptualHash::hashFromFile('/path/to/image2.jpg');
$distance = PerceptualHash::distance($hash1, $hash2);
if ($distance <= 10) {
echo "Images are very similar!";
}
// Generate different sized hashes for different use cases
$hash64 = PerceptualHash::hashFromFile($path, 64); // Default, most accurate
$hash32 = PerceptualHash::hashFromFile($path, 32); // Balanced speed/accuracy
$hash16 = PerceptualHash::hashFromFile($path, 16); // Fast, basic matching
$hash8 = PerceptualHash::hashFromFile($path, 8); // Extremely fast, rough matching
// Same options available for DHash
$dHash = DHash::hashFromFile($path, 32);
// The new API returns HashValue objects with type safety
$pHash = PerceptualHash::hashFromFile('image.jpg');
$dHash = DHash::hashFromFile('image.jpg');
// This will throw an exception - can't compare different algorithms!
try {
PerceptualHash::distance($pHash, $dHash);
} catch (InvalidArgumentException $e) {
echo "Cannot compare hashes from different algorithms";
}
// Get hash details
echo $pHash->getValue(); // Raw integer value
echo $pHash->getBits(); // 64
echo $pHash->getAlgorithm(); // "perceptual"
echo $pHash->toHex(); // Hexadecimal representation
use LegitPHP\HashMoney\HashValue;
$hash = PerceptualHash::hashFromFile('image.jpg');
// Get hash information
$value = $hash->getValue(); // Raw integer value
$hex = $hash->toHex(); // Hex representation (e.g., "a1b2c3d4e5f6")
$binary = $hash->toBinary(); // Binary string (e.g., "101010110010...")
$bits = $hash->getBits(); // Size in bits (8, 16, 32, or 64)
$algorithm = $hash->getAlgorithm(); // Algorithm name ("perceptual" or "dhash")
// Compare hashes
if ($hash1->equals($hash2)) {
echo "Exact match!";
}
if ($hash1->isCompatibleWith($hash2)) {
$distance = PerceptualHash::distance($hash1, $hash2);
echo "Distance: $distance";
}
// Process multiple images efficiently
$images = glob('/path/to/images/*.jpg');
$hashes = [];
foreach ($images as $image) {
$hashes[$image] = DHash::hashFromFile($image, 32);
}
// Find similar images
foreach ($hashes as $path1 => $hash1) {
foreach ($hashes as $path2 => $hash2) {
if ($path1 !== $path2 && DHash::distance($hash1, $hash2) < 10) {
echo "$path1 is similar to $path2\n";
}
}
}
// Configure for maximum performance
PerceptualHash::configure([
'concurrency' => 8, // Use 8 CPU cores
'cache_max' => 200 * 1024 * 1024, // 200MB cache
'disable_cache' => false, // Enable caching
]);
// Configure with different settings
DHash::configure([
'concurrency' => 4,
'cache_max' => 100 * 1024 * 1024, // 100MB cache
]);
// Process from memory to avoid disk I/O
$imageData = file_get_contents('large-image.jpg');
$hash = PerceptualHash::hashFromString($imageData);
// Use MashedHash + pHash for best results
$mHash = MashedHash::hashFromFile($image);
$pHash = PerceptualHash::hashFromFile($image);
if (MashedHash::distance($mHash1, $mHash2) < 20 &&
PerceptualHash::distance($pHash1, $pHash2) < 12) {
// High confidence match
}
// Use all three spatial/color hashes
$pHash = PerceptualHash::hashFromFile($image);
$dHash = DHash::hashFromFile($image);
$colorHash = ColorHistogramHash::hashFromFile($image);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.