当前位置: 动力学知识库 > 问答 > 编程问答 >

PHP include image file with changing filename

问题描述:

I am completely new to PHP so forgive me if this question seems very rudimentry. And thank you in advance.

I need to include a jpg that is generated from a webcam on another page. However I need to include only the latest jpg file. Unfortunately the webcam creates a unique filename for each jpg. How can I use include or another function to only include the latest image file?

(Typically the filename is something like this 2011011011231101.jpg where it stands for year_month_date_timestamp).

网友答案:

Easy way is to get the latest image with the help of the below code

$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

give the source of latest image to <img> tag

网友答案:

Since the images are named via pattern which relates to the date, you should be able to just use:

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

This is fairly straightforward, since your file names are in order.

The first thing you need is a list of files in the directory. The readdir (doc) function is what you are looking for. Example script that uses it: http://www.liamdelahunty.com/tips/php_list_a_directory.php

Once you have that, use substr() (doc) to chop off the file name extensions.

You're left with an array of numbers, essentially. From here, do a sort (doc) and specify the SORT_NUMERIC flag. Grab the number on the end, stick a .jpg back on it, and you have the last file.

Alternate Solution: Read the timestamps of files to get the last one. This would generally be a better answer, but perhaps not in your situation if you plan to edit any of the files.

网友答案:

I guess you will have to know a way to determine what the latest image file is called. Maybe you can make a textfile or something where every time a new image is created the webcam writes the latest filename in the text file (so the only text in the text file is the file name of the latest image file if it makes any sense). Of course you will have to have access to the script that generates the php file.

网友答案:

addition to @ken 's post, it's probably sorting alphabetically instead of numerically. perhaps you could try:

$imgs = glob('C:\images\*.jpg');
rsort($imgs, SORT_NUMERIC);
$newestImage = $imgs[0];
分享给朋友:
您可能感兴趣的文章:
随机阅读: