<?php
// 设置样本图路径
$sampleImage = '/mnt/data/655384b3e490c.jpg'; // 你上传的雪糕筒图路径
$targetDir = __DIR__ . '/Uploads/vod'; // 扫描的目录,递归包括子目录
// 获取图像的MD5哈希
function getImageHash($path) {
return file_exists($path) ? md5_file($path) : false;
}
// 递归遍历目录,找出所有图片
function findAllImages($dir) {
$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
$images = [];
foreach ($rii as $file) {
if ($file->isDir()) continue;
$ext = strtolower(pathinfo($file->getFilename(), PATHINFO_EXTENSION));
if (in_array($ext, ['jpg', 'jpeg', 'png', 'gif', 'webp'])) {
$images[] = $file->getPathname();
}
}
return $images;
}
// 删除与样本图相同的图片
function deleteMatchingImages($imagePaths, $sampleHash) {
$deleted = [];
foreach ($imagePaths as $filePath) {
if (md5_file($filePath) === $sampleHash) {
unlink($filePath);
$deleted[] = $filePath;
}
}
return $deleted;
}
// 执行流程
$sampleHash = getImageHash($sampleImage);
if (!$sampleHash) {
echo "样本图片读取失败。";
exit;
}
$allImages = findAllImages($targetDir);
$deleted = deleteMatchingImages($allImages, $sampleHash);
// 显示结果
if (empty($deleted)) {
echo "没有找到匹配的图片。";
} else {
echo "以下图片已被删除:<br>";
foreach ($deleted as $img) {
echo htmlspecialchars($img) . "<br>";
}
}
?>
扫描 /Uploads/vod/ 下所有子目录查找所有图片(包括 .jpg, .jpeg, .png, .gif, .webp 等)
对比每张图片的哈希值是否与“雪糕筒”图像相同
若相同就删除
使用方法
-
上传你要匹配的样本图片(如
655384b3e490c.jpg
)到某个路径。 -
修改
$sampleImage
为样本图片路径。 -
修改
$targetDir
为你实际的/Uploads/vod
目录路径(建议用绝对路径或者__DIR__
起始)。 -
放到你的网站运行一次即可。