• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            <?php
            /**
             * 
             * 相似圖片搜索hash的php實現(xiàn)
             * @author welefen
             *
             
            */
            class Imghash{
                
                private static $_instance = null;
                
                public $rate = 2;
                
                public static function getInstance(){
                    if (self::$_instance === null){
                        self::$_instance = new self();
                    }
                    return self::$_instance;
                }
                public function run($file){
                    if (!function_exists('imagecreatetruecolor')){
                        throw new Exception('must load gd lib', 1);
                    }
                    $isString = false;
                    if (is_string($file)){
                        $file = array($file);
                        $isString = true;
                    }
                    $result = array();
                    foreach ($file as $f){
                        $result[] = $this->hash($f);
                    }
                    return $isString ? $result[0] : $result;
                }
                public function checkIsSimilarImg($imgHash$otherImgHash){
                    if (file_exists($imgHash) && file_exists($otherImgHash)){
                        $imgHash = $this->run($imgHash);
                        $otherImgHash = $this->run($otherImgHash);
                    }
                    if (strlen($imgHash) !== strlen($otherImgHash)) return false;
                    $count = 0;
                    $len = strlen($imgHash);
                    for($i=0;$i<$len;$i++){
                        if ($imgHash{$i} !== $otherImgHash{$i}){
                            $count++;
                        }
                    }
                    return $count <= (5 * $this->rate * $this->rate) ? true : false;
                }
                public function hash($file){
                    if (!file_exists($file)){
                        return false;
                    }
                    $height = 8 * $this->rate;
                    $width = 8 * $this->rate;
                    $img = imagecreatetruecolor($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<$height;$y++){
                        for ($x=0;$x<$width;$x++){
                            $gray = ( imagecolorat($img$x$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<$height;$y++){
                        for ($x=0;$x<$width;$x++){
                            if ($array[$y][$x] >= $average){
                                $result .= '1';
                            }else{
                                $result .= '0';
                            }
                        }
                    }
                    return $result;
                }
                public function createImg($file){
                    $ext = $this->getFileExt($file);
                    if ($ext === 'jpeg') $ext = 'jpg';
                    $img = null;
                    switch ($ext){
                        case 'png' : $img = imagecreatefrompng($file);break;
                        case 'jpg' : $img = imagecreatefromjpeg($file);break;
                        case 'gif' : $img = imagecreatefromgif($file);
                    }
                    return $img;
                }
                public function getFileExt($file){
                    $infos = explode('.', $file);
                    $ext = strtolower($infos[count($infos) - 1]);
                    return $ext;
                }
            }
            @import url(http://m.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
            posted on 2016-09-22 10:29 聶文龍 閱讀(419) 評論(1)  編輯 收藏 引用

            FeedBack:
            # re: 相似圖片搜索hash的php實現(xiàn) 2016-09-22 11:07 聶文龍
            require_once "Imghash.class.php";
            $instance = ImgHash::getInstance();
            $result = $instance->checkIsSimilarImg('chenyin/IMG_3214.png', 'chenyin/IMG_3212.JPG');
            如果$result值為true, 則表明2個圖片相似,否則不相似。  回復(fù)  更多評論
              

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            伊人情人综合成人久久网小说| 欧美麻豆久久久久久中文| 国内精品伊人久久久久妇| 欧美久久一级内射wwwwww.| 国产美女亚洲精品久久久综合| 精品久久久久久中文字幕大豆网| 久久久精品人妻一区二区三区蜜桃| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 国产成人综合久久精品尤物| 欧美激情精品久久久久久久九九九| 热re99久久6国产精品免费| 久久精品国产91久久综合麻豆自制| 国内精品久久久久久久久| 无遮挡粉嫩小泬久久久久久久| 99久久精品国产综合一区| 久久精品人妻中文系列| 久久人妻少妇嫩草AV蜜桃| 亚洲精品乱码久久久久久蜜桃不卡| 久久精品草草草| 91性高湖久久久久| 精品久久久久久久久久中文字幕| 欧美日韩精品久久久久| 久久久国产精品| 久久久噜噜噜久久中文字幕色伊伊| 99久久99这里只有免费费精品| 少妇人妻综合久久中文字幕| 久久久国产亚洲精品| 久久精品麻豆日日躁夜夜躁| 久久久久人妻一区精品色| 99国产精品久久久久久久成人热| 亚洲中文精品久久久久久不卡| 成人妇女免费播放久久久| 国产精品久久亚洲不卡动漫| 久久亚洲欧洲国产综合| 无码专区久久综合久中文字幕| 青青青伊人色综合久久| 亚洲另类欧美综合久久图片区| 国产99精品久久| 日本久久中文字幕| 2020最新久久久视精品爱| 亚洲国产精品无码久久98|