PHP 比对两个图片是否相等

需求是这样的,朋友公司收到封举报邮件,说是未经同意用了别人的图片,并发来图片样本,朋友老板让他从后台十几万图片中找到图片的位置。

分析:图片也是文件,所以我们只需要遍历所有图片,对比图片的 md5 值是否相等就行了。

code:

<?PHP

$dir = '/path/images/';  // 本地所有图片的目录路径
$md5 = md5_file('/path/test.png');  // 盗用图片的 路径

$Directory = new RecursiveDirectoryIterator($dir);
$Iterator = new RecursiveIteratorIterator($Directory);
$i = 0;
$file = null;
foreach ($Iterator as $item) {
    $i++;
    /** @var $item SplFileInfo */
    if ($item->isDir()) {
        continue;
    }

    if (md5_file($item->getRealPath()) == $md5) {
        $file = $item;
        break;
    } else {
        echo "未找到,第" . $i . "个文件: " . $item->getRealPath() . PHP_EOL;
    }
}

if ($file) {
    echo "已找到,路径为" . $file->getRealPath();
} else {
    echo "找完了,未找到";
}
echo PHP_EOL . "内存占用:" . memory_get_usage();

发表评论