用户名  找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 351|回复: 0
打印 上一主题 下一主题

PHP实现搜索相似图片

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 05:42:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            感知哈希算法
count  10 两张不同的图片
var_dump(ImageHash::run(‘./1.png', ‘./psb.jpg'));
getHashValue($src1);
    $hash2 = $self->getHashValue($src2);
    if(strlen($hash1) !== strlen($hash2)) return false;
    $count = 0;
    $len = strlen($hash1);
    for($i = 0; $i getImage($file);
    imagecopyresampled($img, $src, 0, 0, 0, 0, $w, $h, $src_w, $src_h);
    imagedestroy($src);
    $total = 0;
    $array = array();
    for( $y = 0; $y > 8) & 0xFF;
        if(!isset($array[$y])) $array[$y] = array();
        $array[$y][$x] = $gray;
        $total += $gray;
      }
    }
    imagedestroy($img);
    $average = intval($total / ($w * $h * 2));
    $hash = '';
    for($y = 0; $y = $average) ? '1' : '0';
      }
    }
    var_dump($hash);
    return $hash;
  }
}
var_dump(ImageHash::run('./1.png', './psb.jpg'));
方法二:
hash($f);
}
return $isString ? $result[0] : $result;
}
public function checkIsSimilarImg($, $otherImgHash){
if (file_exists($) && file_exists($otherImgHash)){
  $$this->run($);
  $otherImgHash = $this->run($otherImgHash);
}
if (strlen($) !== strlen($otherImgHash)) return false;
$count = 0;
$len = strlen($);
for($i=0;$irate;
$width = 8 * $this->rate;
$($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> 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= $average){
   $result .= '1';
  }else{
   $result .= '0';
  }
  }
}
return $result;
}
public function createImg($file){
$ext = $this->getFileExt($file);
if ($ext === 'jpeg') $ext = 'jpg';
$;
switch ($ext){
  case 'png' : $($file);break;
  case 'jpg' : $($file);break;
  case 'gif' : $($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/', 'chenyin/');
如果$result值为true, 则表明2个图片相似,否则不相似。
            
            
您可能感兴趣的文章:
  • javascript图片相似度算法实现 js实现直方图和向量算法
  • Java基于直方图应用的相似图片识别实例
  • PHP实现的简易版图片相似度比较
  • Python比较两个图片相似度的方法
  • 利用Python实现简单的相似图片搜索的教程
  • JAVA比较两张图片相似度的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端