我有两个图像文件夹原始/和拇指/但文件计数不同(拇指/有较少)所以我需要找到哪些图像丢失,文件名完全相同IE没有前缀在拇指上,所以标题说怎么可以我比较两个文件夹并输出缺失图像的列表?
更新:
没有一个答案似乎做了我想要的,但我想出了这个非常粗略的答案
不建议使用!!
我们给身体一个黑暗的背景,然后用明亮的杰出颜色样式img:
<style>
body{background:#000;}
img {height:10px;width:10px;background:pink;border:1px solid #ccc;padding:10px;margin:5px;}
</style>
Run Code Online (Sandbox Code Playgroud)
PHP:
// Read dir ...
$images = glob('original/{*.jpg,*.gif,*.png}', GLOB_BRACE);
// throw out a foreach ...
foreach($images as $image)
{
// using str_replace switch folders
$image = str_replace('original/', 'thumbs/', $image);
// echo result
$result = '<img src="' . $image . '" alt="m" />';
echo $result;
}
Run Code Online (Sandbox Code Playgroud)
经过漫长的等待和近乎杀死你的系统所有图像显示,现在你只需查看每个图像并找到丢失的图像.
请在此处查看结果:http: //s12.postimage.org/5kcsvs48r/missing.jpg
就像我说这是一种非常粗暴的做法和服务器密集型,如果只有少量图片可能还可以,但是你可能很容易通过阅读找到它们但我有超过8000张图片需要通过,无论如何,就像我之前说的那样是不可取的,但我想我会分享我的答案无论好坏.
一种开始的方式:
$original = array_map('basename', glob('original/*.{jpg,gif,png}', GLOB_BRACE));
$thumbs = array_map('basename', glob('thumbs/*.{jpg,gif,png}', GLOB_BRACE));
$missing_thumbs = array_diff($original, $thumbs);
$missing_original = array_diff($thumbs, $original);
Run Code Online (Sandbox Code Playgroud)
编辑说明:我错过了,array_diff()
因为glob()
数组包含路径名,所以不会在这里工作...修补basename()
映射,现在它将按预期工作.
以下内容摘自www.php.net/opendir/:
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以对两个目录执行此操作,并将文件名放在单独的数组中,而不是回显它们。然后比较数组以找到丢失的文件。