A perceptual hash is a fingerprint of a multimedia file derived from various features from its content. Unlike cryptographic hash functions which rely on the avalanche effect of small changes in input leading to drastic changes in the output, perceptual hashes are "close" to one another if the features are similar.

The code: https://github.com/jenssegers/php-imagehash

The blogpost: http://jenssegers.be/blog/61/perceptual-image-hashes