介绍
这期内容当中小编将会给大家带来有关利用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怎么对相似的图片进行搜索