Maison  >  Questions et réponses  >  le corps du texte

Afficher des images similaires dans le répertoire après comparaison avec l'entrée d'image en php

Dans ma page Web, l'utilisateur téléchargera une image, puis, une fois soumise, elle devra être comparée à toutes les images du répertoire et des images similaires doivent être générées. J'ai fait cela avec md5 mais il ne génère que l'image exacte, je connais la raison mais je ne sais pas comment boucler toutes les images de mon répertoire avec l'image d'entrée en utilisant la comparaison RVB... Quelqu'un peut-il m'aider ? Voici mon code actuel :

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

        }


    
}
}
?>

Et mon code 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 Il y a quelques jours509

répondre à tous(1)je répondrai

  • P粉860897943

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

    J'ai utilisé la classe mentionnée dans ce référentiel git pour calculer les hachages d'images et leurs différences.

    https://github.com/nvthaovn/CompareImage

    et j'ai changé mon code en :

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

    répondre
    0
  • Annulerrépondre