PHP包括具有更改文件名的图像文件

时间:2011-01-11 18:25:17

标签: php

我是PHP的新手,请原谅我,如果这个问题看起来非常不合时宜。并提前谢谢你。

我需要在另一个页面上包含从网络摄像头生成的jpg。但是我只需要包含最新的jpg文件。不幸的是,网络摄像头为每个jpg创建一个唯一的文件名。如何使用include或其他功能仅包含最新的图像文件? (通常文件名是这样的2011011011231101.jpg,代表year_month_date_timestamp)。

5 个答案:

答案 0 :(得分:2)

简单的方法是借助以下代码获取最新图片

$path = "/path/to/my/dir"; 

$latest_ctime = 0;
$latest_filename = '';    

$d = dir($path);
while (false !== ($entry = $d->read())) {
  $filepath = "{$path}/{$entry}";
  // could do also other checks than just checking whether the entry is a file
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
      $latest_ctime = filectime($filepath);
      $latest_filename = $entry;
    }
  }
}

// now $latest_filename contains the filename of the newest file

将最新图片的来源提供给<img>代码

答案 1 :(得分:2)

由于图像是通过与日期相关的模式命名的,因此您应该能够使用:

$imgs = glob('C:\images\*.jpg');
rsort($imgs);
$newestImage = $imgs[0];

答案 2 :(得分:1)

我想您必须知道一种确定最新图像文件的方法。也许你可以创建一个文本文件或其他东西,每次创建一个新图像时,网络摄像头会在文本文件中写入最新的文件名(因此,如果有任何意义,文本文件中的唯一文本是最新图像文件的文件名) 。当然,您必须能够访问生成php文件的脚本。

答案 3 :(得分:1)

这是相当简单的,因为你的文件名是有序的。

您需要的第一件事是目录中的文件列表。 readdir(doc)函数正是您要寻找的。使用它的示例脚本:http://www.liamdelahunty.com/tips/php_list_a_directory.php

完成后,使用substr()doc)来删除文件扩展名。

基本上,你留下了一系列数字。在此处,执行sortdoc)并指定SORT_NUMERIC标记。抓住最后的数字,将.jpg重新贴在上面,然后你就拥有了最后一个文件。

替代解决方案:读取文件的时间戳以获取最后一个。这通常是一个更好的答案,但如果您计划编辑任何文件,可能不适合您。

答案 4 :(得分:1)

除了@ken的帖子,它可能按字母顺序而不是数字排序。也许你可以试试:

$imgs = glob('C:\images\*.jpg');
rsort($imgs, SORT_NUMERIC);
$newestImage = $imgs[0];