Heim  >  Fragen und Antworten  >  Hauptteil

Geben Sie ähnliche Bilder im Verzeichnis aus, nachdem Sie sie mit der Bildeingabe in PHP verglichen haben

Auf meiner Webseite lädt der Benutzer ein Bild hoch und nach der Übermittlung sollte es mit allen Bildern im Verzeichnis verglichen und ähnliche Bilder ausgegeben werden. Ich habe das mit md5 gemacht, aber es gibt nur das genaue Bild aus. Ich kenne den Grund, aber ich weiß nicht, wie ich alle Bilder in meinem Verzeichnis mit dem Eingabebild mithilfe eines RGB-Vergleichs in einer Schleife ausführen soll ... Kann mir jemand helfen? Das ist mein aktueller Code:

<?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."'/>";
            }

        }


    
}
}
?>

Und mein HTML-Code

<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粉245003607238 Tage vor465

Antworte allen(1)Ich werde antworten

  • 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;
        }
    }

    Antwort
    0
  • StornierenAntwort