phpç±å¥½è
们å¾å¯¹phpå¼åç追æ±æ¯æ°¸ä¸æ¢æ¥çï¼ä»å¤©å¶ç¶æ³èµ·æ¥äº åä¸
phpæä¹å®ç°ç¸ä¼¼å¾ççæç´¢å¢ï¼
å
¶ä¸çåçæ¥è§£éä¸
1ã缩å°å°ºå¯¸ãå°å¾ç缩å°å°8Ã8ç尺寸ï¼æ»å
±64个åç´ ãè¿ä¸æ¥çä½ç¨æ¯å»é¤å¾ççç»èï¼åªä¿çç»æãææçåºæ¬ä¿¡æ¯ï¼æå¼ä¸å尺寸ãæ¯ä¾å¸¦æ¥çå¾çå·®å¼ã
2ãç®åè²å½©ãå°ç¼©å°åçå¾çï¼è½¬ä¸º64级ç°åº¦ãä¹å°±æ¯è¯´ï¼ææåç´ ç¹æ»å
±åªæ64ç§é¢è²ã
3ã计ç®å¹³åå¼ã计ç®ææ64个åç´ çç°åº¦å¹³åå¼ã
4ãæ¯è¾åç´ çç°åº¦ãå°æ¯ä¸ªåç´ çç°åº¦ï¼ä¸å¹³åå¼è¿è¡æ¯è¾ã大äºæçäºå¹³åå¼ï¼è®°ä¸º1ï¼å°äºå¹³åå¼ï¼è®°ä¸º0ã
5ã计ç®åå¸å¼ãå°ä¸ä¸æ¥çæ¯è¾ç»æï¼ç»åå¨ä¸èµ·ï¼å°±ææäºä¸ä¸ª64ä½çæ´æ°ï¼è¿å°±æ¯è¿å¼ å¾ççæ纹ãç»åç次åºå¹¶ä¸éè¦ï¼åªè¦ä¿è¯ææå¾çé½éç¨åæ ·æ¬¡åºå°±è¡äºãå¾å°æ纹以åï¼å°±å¯ä»¥å¯¹æ¯ä¸åçå¾çï¼çç64ä½ä¸æå¤å°ä½æ¯ä¸ä¸æ ·çã
使ç¨ä»£ç
hash($f);
}
return $isString ? $result[0] : $result;
}
public function checkIsSimilarImg($imgHash, $otherImgHash){
if (file_exists($imgHash) && file_exists($otherImgHash)){
$imgHash = $this->run($imgHash);
$otherImgHash = $this->run($otherImgHash);
}
if (strlen($imgHash) !== strlen($otherImgHash)) return false;
$count = 0;
$len = strlen($imgHash);
for($i=0;$i<$len;$i++){
if ($imgHash{$i} !== $otherImgHash{$i}){
$count++;
}
}
return $count <= (5 * $rate * $rate) ? true : false;
}
public function hash($file){
if (!file_exists($file)){
return false;
}
$height = 8 * $this->rate;
$width = 8 * $this->rate;
$img = imagecreatetruecolor($width, $height);
list($w, $h) = getimagesize($file);
$source = $this->createImg($file);
imagecopyresampled($img, $source, 0, 0, 0, 0, $width, $height, $w, $h);
$value = $this->getHashValue($img);
imagedestroy($img);
return $value;
}
public function getHashValue($img){
$width = imagesx($img);
$height = imagesy($img);
$total = 0;
$array = array();
for ($y=0;$y<$height;$y++){
for ($x=0;$x<$width;$x++){
$gray = ( imagecolorat($img, $x, $y) >> 8 ) & 0xFF;
if (!is_array($array[$y])){
$array[$y] = array();
}
$array[$y][$x] = $gray;
$total += $gray;
}
}
$average = intval($total / (64 * $this->rate * $this->rate));
$result = '';
for ($y=0;$y<$height;$y++){
for ($x=0;$x<$width;$x++){
if ($array[$y][$x] >= $average){
$result .= '1';
}else{
$result .= '0';
}
}
}
return $result;
}
public function createImg($file){
$ext = $this->getFileExt($file);
if ($ext === 'jpeg') $ext = 'jpg';
$img = null;
switch ($ext){
case 'png' : $img = imagecreatefrompng($file);break;
case 'jpg' : $img = imagecreatefromjpeg($file);break;
case 'gif' : $img = imagecreatefromgif($file);
}
return $img;
}
public function getFileExt($file){
$infos = explode('.', $file);
$ext = strtolower($infos[count($infos) - 1]);
return $ext;
}
}
è°ç¨æ¹å¼å¦ä¸ï¼
require_once "Imghash.class.php";
$instance = ImgHash::getInstance();
$result = $instance->checkIsSimilarImg('chenyin/IMG_3214.png', 'chenyin/IMG_3212.JPG');
å¦æ$resultå¼ä¸ºtrue, å表æ2个å¾çç¸ä¼¼ï¼å¦åä¸ç¸ä¼¼ã
温馨提示:答案为网友推荐,仅供参考