对于网络摄像头,我有以下脚本,该脚本每分钟通过cron job运行时上传图片。 它会在特定文件夹中搜索图像,然后重新命名最新图像,将其复制到新目的地,然后删除其余图像。
这是脚本:
<?php
date_default_timezone_set("Europe/Athens");
//
//Watch Folder
$dir = "../upload";
//File extention to watch
$pattern = '/^.(jpg)$/';
//Newest file check
$newstamp = 0;
$newname = "";
if ($handle = opendir($dir)) {
while (false !== ($fname = readdir($handle))) {
// Eliminate current directory, parent directory
if (preg_match(' /^\.{1,2}$/',$fname)) continue;
// Eliminate other pages not in pattern
if (! preg_match('/\.(jpg)$/',$fname)) continue;
// -------------
// Collecting images
$pinakas[] = $fname;
}
// Sort Images
sort($pinakas);
// Count
$posot = count($pinakas);
// Take the before last position
if ($posot>1) $newname = $pinakas[$posot-2];
if ($posot==1) $newname = $pinakas[$posot-1];
}
closedir ($handle);
// $newname NEW IMAGE NAME
//COPY NEW IMAGE TO NEW PLACE
copy("../upload/$newname", "../camera1.jpg");
//DELETE IMAGES
$filesa = glob('../upload/*.jpg');
array_walk($filesa,'myunlink');
function myunlink($t)
{
unlink($t);
}
?>
现在我有一个新的IP摄像机,它每分钟但每次都在不同的文件夹中上载图片,
Time: 10:01 ..upload/GSDGSDGSDGS/19-07-2018/001/jpg/10/01/05[R][0@0][0].jpg
Time: 10:02 ..upload/GSDGSDGSDGS/19-07-2018/001/jpg/10/02/06[R][0@0][0].jpg
Time: 10:03 ..upload/GSDGSDGSDGS/19-07-2018/001/jpg/10/03/07[R][0@0][0].jpg
我现在如何使脚本搜索..upload的所有子文件夹以获取最新的jpg抓图,将其复制到新位置并删除..upload文件夹的所有子文件夹和.jpg图像?
任何帮助表示赞赏。
答案 0 :(得分:0)
您可以使用递归函数来做到这一点:
function getJpgImages($dir, &$pinakas = array()){
$files = scandir($dir);
foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
if ( preg_match('/\.(jpg)$/',$path) )
$pinakas[] = $path;
} else if($value != "." && $value != "..") {
getDirContents($path, $pinakas);
}
}
return $pinakas;
}
,然后删除while循环并获取如下图像:
$pinakas = getJpgImages($dir);