Heim > Fragen und Antworten > Hauptteil
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粉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; } }