====== Sorting Images based on Exif data ====== Suppose you have a folder containing images taken by a digital camera over a period of time, wouldn't it be nice to sort these images into folders? The script below **copies** folders from one folder to another, creating subfolders in the target folder with the name of YYYY-MM (2010-07). **Usage:** Save the script in your home folder e.g. imagecopy.php, and adjust the source and target folder names in the script. Then, execute the script php -f ~/imagecopy.php The script won't overwrite existing files in $target. But still, be careful with your images. Better try with backups first. $fileobj) { $basename = $fileobj->getBasename(); $extension = strtolower(substr($basename, strrpos($basename, '.')+1)); if (in_array($extension, $filetypes)) { // read creation date from exif information, otherwise mtime echo $filename."\n"; $exif = exif_read_data($filename, 'IFDO', 0); if ($exif!==false && isset($exif['DateTime'])) { $edate = $exif['DateTime']; $ts = strtotime($edate); } else { $ts = filemtime($filename); } // target folder $datestr = date('Y', $ts).'-'.date('m', $ts); $targetfolder = $target.'/'.$datestr; if (!file_exists($targetfolder)) { mkdir($targetfolder); } // copy file $targetfile = $targetfolder.'/'.$basename; if (!file_exists($targetfile)) { copy($filename, $targetfile); } else { echo "$targetfile exists!\n"; } } } $bytestotal=number_format($bytestotal); echo "Total: $nbfiles files, $bytestotal bytes\n"; ?>