在我的网页中,用户将上传图像,然后在提交后应将其与目录中的所有图像进行比较并输出相似的图像。我用 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粉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; } }