使用PHP依次重命名目录中的所有图像文件
以下功能会将目录中的所有图像文件重命名为顺序的。参数是文件所在目录的路径,以及将用于通过PHPusort()函数对文件数组进行排序的函数的名称。
function sequentialImages($path, $sort=false) { $i = 1; $files = glob($path."/{*.gif,*.jpg,*.jpeg,*.png}",GLOB_BRACE|GLOB_NOSORT); if ( $sort !== false ) { usort($files, $sort); } $count = count($files); foreach ( $files as $file ) { $newname = str_pad($i, strlen($count)+1, '0', STR_PAD_LEFT); $ext = substr(strrchr($file, '.'), 1); $newname = $path.'/'.$newname.'.'.$ext; if ( $file != $newname ) { rename($file, $newname); } $i++; } }
可以在第二个参数中使用以下函数,以按文件的最后修改时间对文件进行排序。
function sort_by_mtime($file1, $file2) { $time1 = filemtime($file1); $time2 = filemtime($file2); if ( $time1 == $time2 ) { return 0; } return ($time1 < $time2) ? 1 : -1; }
将这两个函数放在一起,我们可以sequentialImages()像这样调用该函数。
sequentialImages('files','sort_by_mtime');
此功能拍摄以下图像集:
file1.gif file2.gif wibble.gif wobble.gif 02.gif
并将它们重命名为以下内容:
01.gif 02.gif 03.gif 04.gif 05.gif