计算出图像指纹后通过计算汉明距离计算指纹的相似度
function getLeng($dhash_1, $dhash_2)
{
$tem = hex2bin($dhash_1) ^ hex2bin($dhash_2);
$tem = bin2hex($tem);
$tem = base_convert($tem, 16, 2);
return substr_count($tem, '1');
}
dhash算法只描述了一张图片的变化趋势,所以如果一张图片是全黑一张图片是全白,内部的变化是一致的,通过dhash就会认为是同一张图片,通过比对RGB三个通道的色彩均值的偏差来补充这个缺陷
function rgb($src)
{
$rTotal = 0;
$gTotal = 0;
$bTotal = 0;
$total = 0;
$i = imagecreatefromstring($src);
for ($x = 0; $x < imagesx($i); $x++) {
for ($y = 0; $y < imagesy($i); $y++) {
$rgb = imagecolorat($i, $x, $y);
$r = ($rgb >> 16) & 0xff;
$g = ($rgb >> 4) & 0xff;
$b = $rgb & 0xff;
$rTotal += $r;
$gTotal += $g;
$bTotal += $b;
$total++;
}
}
return array(
'r' => round($rTotal / $total, 3),
'g' => round($gTotal / $total, 3),
'b' => round($bTotal / $total, 3),
);
}