利用PHP怎么对相似的图片进行搜索

  介绍

这期内容当中小编将会给大家带来有关利用PHP怎么对相似的图片进行搜索,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>感知哈希算法

统计& lt;=5匹配最相似
数比;10两张不同的图片
var_dump (ImageHash:运行(“,/1. png # 39;”。/psb.jpg& # 39;));

& lt; php ?   class  ImageHash  {   const 才能;FILE_NOT_FOUND =, & # 39; 1 & # 39;;   const 才能;FILE_EXTNAME_ILLEGAL =, & # 39; 2 & # 39;;   private 才能;function  __construct (), {}   public 才能;static  function 运行(src1美元,,src2美元),{   ,,,static 美元自我;   ,,,如果自我)(! $,$ self =, new 静态;   ,,,如果(! is_file (src1美元),| |,! is_file (src2美元)),退出(self:: FILE_NOT_FOUND);   ,,,hash2 美元;=,美元自→getHashValue ($ src1);   ,,,hash3 美元;=,美元自→getHashValue ($ src2);   ,,,如果(strlen (hash2美元),!==,strlen (hash3美元)),return 假;   ,,,count 美元;=,0;   ,,,len 美元;=,strlen ($ hash2);   ,,,($小姐:=,0;,美元小姐:& lt;, len;美元,美元我+ +),如果(hash2美元($ i), !==, hash3美元[$ i]),美元计数+ +;   ,,,return  count 美元;& lt;=, 10, ?, true :,假;   ,,}   public 才能;function  getImage(文件),{   ,,,extname 美元;=,pathinfo(文件,美元,PATHINFO_EXTENSION);   ,,,如果(! in_array (extname美元,[& # 39;jpg # 39; & # 39; jpeg # 39;, & # 39; png # 39;, & # 39; gif # 39;])),退出(self:: FILE_EXTNAME_ILLEGAL);   ,,,img 美元;=,call_user_func (& # 39; imagecreatefrom& # 39;只(,extname 美元;==,& # 39;jpg # 39;, ?, & # 39; jpeg # 39;,:, extname 美元),,,美元文件);   ,,,return  img美元;   ,,}   public 才能;function  getHashValue(文件),{   ,,,w 美元;=,8;   ,,,h 美元;=,8;   ,,,img 美元;=,imagecreatetruecolor (w美元,,h);   ,,,(src_w美元,,src_h美元)列表,=,getimagesize($文件);   ,,,src 美元;=,$ this→getImage($文件);   ,,,imagecopyresampled (img美元,美元src,, 0, 0, 0, 0,, w美元,美元h, src_w美元,美元src_h);   ,,,imagedestroy (src);   ,,,total 美元;=,0;   ,,,array 美元;=,数组();   ,,,(,y 美元;=,0;,y 美元;& lt;, h;美元,美元y + +), {   ,,,,,for  ($ x =, 0;, x 美元;& lt;, w美元;,$ x + +), {   ,,,,,,,gray 美元;=,(imagecolorat (img美元,,x,, y)美元,祝辞祝辞,8),,,0 xff;   ,,,,,,,如果(!收取($阵列[y]美元)),数组美元($ y),=,数组();   ,,,,,,,数组美元($ y] [$ x],=,灰色的美元;   ,,,,,,,total 美元;+=,灰色的美元;   ,,,,,}   ,,,}   ,,,imagedestroy (img);   ,,,average 美元;=,intval中(total 美元/,(w 美元;*,h 美元;*,2));   ,,,hash 美元;=,& # 39;& # 39;;   ,,,($ y =, 0;, y 美元;& lt;, h;美元,美元y + +), {   ,,,,,,($ x =, 0;, x 美元;& lt;, w美元;,$ x + +), {   ,,,,,,,hash 美元。=,(数组美元($ y] [$ x],祝辞=,平均美元),?,& # 39;1 & # 39;,:,& # 39;0 & # 39;;   ,,,,,}   ,,,}   ,,,var_dump($散列);   ,,,return  $散列;   ,,}   }   var_dump (ImageHash::运行(& # 39;1.。/png # 39;,, & # 39;。/psb.jpg& # 39;));

方法二:

哈希($ f);   ,}   ,return  isString 美元;?美元的结果[0],:,美元的结果;   ,}   ,public  function  checkIsSimilarImg (imgHash美元,,otherImgHash美元){   ,if  (file_exists (imgHash美元),,,,file_exists (otherImgHash美元)){=美元才能imgHash  $ this→运行($ imgHash);=美元才能otherImgHash  $ this→运行($ otherImgHash);   ,}   ,if  (strlen (imgHash美元),!==,strlen (otherImgHash美元)),return 假;   ,count 美元;=,0;   ,len 美元;=,strlen ($ imgHash);   ,(我=0;i<美元;len美元,美元我+ +){   if 才能;(美元imgHash{$我},!==,美元otherImgHash {$ i}) {   美元才能数+ +;   ,,}   ,}   ,return  count 美元;& lt;=, (5, *, rate 美元;*,美元利率),?,true :,假;   ,}   ,public  function 哈希(文件){   (!,if  file_exists(文件)美元){   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

利用PHP怎么对相似的图片进行搜索