<ruby id="eitmy"></ruby>
<strong id="eitmy"></strong>
      1. <li id="eitmy"></li>

        1. <li id="eitmy"></li>
          0712-2888027 189-8648-0214
          微信公眾號

          孝感風信網絡科技有限公司微信公眾號

          當前位置:主頁 > 技術支持 > DedeCMS > Dedecms網站移動化分幾步?五步搞定!

          Dedecms網站移動化分幾步?五步搞定!

          時間:2024-04-07來源:風信官網 點擊: 386次
          PHP中如何實現的圖片相似度比較的算法,源代碼如下,供研究參考:

          <?php   
          /**  
          * 圖片相似度比較  
          *  
          * @version     $Id: ImageHash.php 4429 2012-04-17 13:20:31Z jax $  
          * @author      jax.hu  
          *  
          * <code>  
          *  //Sample_1  
          *  $aHash = ImageHash::hashImageFile('wsz.11.jpg');  
          *  $bHash = ImageHash::hashImageFile('wsz.12.jpg');  
          *  var_dump(ImageHash::isHashSimilar($aHash, $bHash));  
          *  
          *  //Sample_2  
          *  var_dump(ImageHash::isImageFileSimilar('wsz.11.jpg', 'wsz.12.jpg'));  
          * </code>  
          */   
             
          class ImageHash {   
             
             /**取樣倍率 1~10  
              * @access public  
              * @staticvar int  
              * */   
             public static $rate = 2;   
             
             /**相似度允許值 0~64  
              * @access public  
              * @staticvar int  
              * */   
             public static $similarity = 80;   
             
             /**圖片類型對應的開啟函數  
              * @access private  
              * @staticvar string  
              * */   
             private static $_createFunc = array(   
                 IMAGETYPE_GIF   =>'imageCreateFromGIF',   
                 IMAGETYPE_JPEG  =>'imageCreateFromJPEG',   
                 IMAGETYPE_PNG   =>'imageCreateFromPNG',   
                 IMAGETYPE_BMP   =>'imageCreateFromBMP',   
                 IMAGETYPE_WBMP  =>'imageCreateFromWBMP',   
                 IMAGETYPE_XBM   =>'imageCreateFromXBM',   
             );   
             
             
             /**從文件建立圖片  
              * @param string $filePath 文件地址路徑  
              * @return resource 當成功開啟圖片則傳遞圖片 resource ID,失敗則是 false  
              * */   
             public static function createImage($filePath){   
                 if(!file_exists($filePath)){ return false; }   
             
                 /*判斷文件類型是否可以開啟*/   
                 $type = exif_imagetype($filePath);   
                 if(!array_key_exists($type,self::$_createFunc)){ return false; }   
             
                 $func = self::$_createFunc[$type];   
                 if(!function_exists($func)){ return false; }   
             
                 return $func($filePath);   
             }   
             
             
             /**hash 圖片  
              * @param resource $src 圖片 resource ID  
              * @return string 圖片 hash 值,失敗則是 false  
              * */   
             public static function hashImage($src){   
                 if(!$src){ return false; }   
             
                 /*縮小圖片尺寸*/   
                 $delta = 8 * self::$rate;   
                 $img = imageCreateTrueColor($delta,$delta);   
                 imageCopyResized($img,$src, 0,0,0,0, $delta,$delta,imagesX($src),imagesY($src));   
             
                 /*計算圖片灰階值*/   
                 $grayArray = array();   
                 for ($y=0; $y<$delta; $y++){   
                     for ($x=0; $x<$delta; $x++){   
                         $rgb = imagecolorat($img,$x,$y);   
                         $col = imagecolorsforindex($img, $rgb);   
                         $gray = intval(($col['red']+$col['green']+$col['blue'])/3)& 0xFF;   
             
                         $grayArray[] = $gray;   
                     }   
                 }   
                 imagedestroy($img);   
             
                 /*計算所有像素的灰階平均值*/   
                 $average = array_sum($grayArray)/count($grayArray);   
             
                 /*計算 hash 值*/   
                 $hashStr = '';   
                 foreach ($grayArray as $gray){   
                     $hashStr .= ($gray>=$average) ? '1' : '0';   
                 }   
             
                 return $hashStr;   
             }   
             
             
             /**hash 圖片文件  
              * @param string $filePath 文件地址路徑  
              * @return string 圖片 hash 值,失敗則是 false  
              * */   
             public static function hashImageFile($filePath){   
                 $src = self::createImage($filePath);   
                 $hashStr = self::hashImage($src);   
                 imagedestroy($src);   
             
                 return $hashStr;   
             }   
             
             
             /**比較兩個 hash 值,是不是相似  
              * @param string $aHash A圖片的 hash 值  
              * @param string $bHash B圖片的 hash 值  
              * @return bool 當圖片相似則傳遞 true,否則是 false  
              * */   
             public static function isHashSimilar($aHash, $bHash){   
                 $aL = strlen($aHash); $bL = strlen($bHash);   
                 if ($aL !== $bL){ return false; }   
             
                 /*計算容許落差的數量*/   
                 $allowGap = $aL*(100-self::$similarity)/100;   
             
                 /*計算兩個 hash 值的漢明距離*/   
                 $distance = 0;   
                 for($i=0; $i<$aL; $i++){   
                     if ($aHash{$i} !== $bHash{$i}){ $distance++; }   
                 }   
             
                 return ($distance<=$allowGap) ? true : false;   
             }   
             
             
             /**比較兩個圖片文件,是不是相似  
              * @param string $aHash A圖片的路徑  
              * @param string $bHash B圖片的路徑  
              * @return bool 當圖片相似則傳遞 true,否則是 false  
              * */   
             public static function isImageFileSimilar($aPath, $bPath){   
                 $aHash = ImageHash::hashImageFile($aPath);   
                 $bHash = ImageHash::hashImageFile($bPath);   
                 return ImageHash::isHashSimilar($aHash, $bHash);   
             }   
             
          } 
          
          
          
          
          熱門關鍵詞: Dedecms 網站移動化
          欄目列表
          推薦內容
          熱點內容
          展開
          一区二区三区福利视频免费看|久久天天躁狠狠躁夜夜2020一|亚洲日本欧美日韩高观看|免费A片无遮挡网站