常用图片指纹计算方式python版:https://blog.csdn.net/enter89/article/details/90293971
在本地电脑上测试5中不同的指纹计算算法
执行10000次时间(单位分钟):
均值哈希算法aHash:03.556553
差值哈希算法dHash:01.203760
感知哈希算法pHash:01.838117
三直方图算法:43.244584
单通道的直方图:11.793451
1、差值哈希算法
2、将图片缩放为98像素
3、获取像素点的灰度值
4、每行从第二个像素开始和该行的第一个参数对比,如果大于为1,小于为0
5、组成一个88=64为的二进制数字,即为该图的指纹
function dHash($src)
{
if (empty($src)) {
return false;
}
$w = 9;
$h = 8;
$dst = imagecreatetruecolor($w, $h);
//如果是图片目录
$img = imagecreatefromstring(file_get_contents($src));
//如果是数据库或者下载下来的二进制数据
$img = imagecreatefromstring($src);
$img && imagecopyresized($dst, $img, 0, 0, 0, 0, $w, $h, 132, 132);