<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="PHP通过哈希算法来实现搜索相似图片" id="card1">
<p> 游客</p><p>
标题:PHP通过哈希算法来实现搜索相似图片<br/>
正文:<br/>
感知哈希算法count &amp;lt; =5 匹配最相似count &amp;gt; 10 两张不同的图片var_dump(ImageHash::run(&amp;lsquo;./1.png', &amp;lsquo;./camnpr.jpg'));&amp;lt;?phpclass ImageHash {  const FILE_NOT_FOUND = '-1';  const FILE_EXTNAME_ILLEGAL = '-2';  private function __construct() {}  public static function run($src1, $src2) {    static $self;    if(!$self) $self = new static;    if(!is_file($src1) || !is_file($src2)) exit(self::FILE_NOT_FOUND);    $hash1 = $self-&amp;gt;getHashValue($src1);    $hash2 = $self-&amp;gt;getHashValue($src2);    if(strlen($hash1) !== strlen($hash2)) return false;    $count = 0;    $len = strlen($hash1);    for($i = 0; $i &amp;lt; $len; $i++) if($hash1[$i] !== $hash2[$i]) $count++;    return $count &amp;lt;= 10 ? true : false;  }  public function getImage($file) {    $extname = pathinfo($file, PATHINFO_EXTENSION);    if(!in_array($extname, ['jpg','jpeg','png','gif'])) exit(self::FILE_EXTNAME_ILLEGAL);    $img = call_user_func('imagecreatefrom'. ( $extname == 'jpg' ? 'jpeg' : $extname ) , $file);    return $img;  }  publi<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2224&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2224&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2224&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2224&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2224&amp;Page=5">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2224">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2224">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>