首页  >  问答  >  正文

与php中输入的图像进行比较后,在目录中输出相似的图像

在我的网页中,用户将上传图像,然后在提交后应将其与目录中的所有图像进行比较并输出相似的图像。我用 md5 做到了这一点,但它只会输出精确的图像,我知道原因,但我不知道如何使用 RGB 比较将我的目录中的所有图像与输入的图像循环...有人可以帮助我吗?这是我当前的代码:

<?php 
    if(isset($_POST['submit'])){

    $filepath=pathinfo($_FILES['file']['name']) ;
    $extension=$filepath['extension'];
    
    $iname= date('H-i-s').'.'.$extension;
    $path='upload/'.$iname;
    if(move_uploaded_file($_FILES['file']['tmp_name'],$path)){
        $img=$path;
        echo $img;
        $f=md5(file_get_contents($img));
        $images=glob("img/*");
        foreach($images as $image){
            if($f==md5(file_get_contents($image))){
                echo  "<img height='70px' width='70px' src='".$image."'/>";
            }

        }


    
}
}
?>

还有我的 html 代码

<html>
     <body> 
       <form method=post enctype="multipart/form-data">
          <input type=file name=file><br><input type=submit name=submit value=submit>
       </form>
    </body>
   </html>

P粉245003607P粉245003607287 天前512

全部回复(1)我来回复

  • P粉860897943

    P粉8608979432024-01-30 00:12:15

    我使用了此 git 存储库中提到的类来计算图像哈希值及其差异。

    https://github.com/nvthaovn/CompareImage

    并将我的代码更改为:

    <?php 
    include('compareImages.php');
    $flag = 0;
    
    if(isset($_POST['submit'])) {
    
        $filepath = pathinfo($_FILES['file']['name']);
        $extension = $filepath['extension'];
        
        $iname = date('H-i-s').'.'.$extension;
        $path = 'upload/'.$iname;
    
        if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
            
            $compareMachine = new compareImages($path);
            $images = glob("img/*");
    
            foreach($images as $image)
            {
                $diff = $compareMachine->compareWith($image);
                
                if($diff < 21) {
                    $results[] = $image;
                    echo  "";
                }
            }
            
            $flag = 1;
        }
    }

    回复
    0
  • 取消回复