Fbに書いたネタの続き。
Usage: rename_photos.php [OPTIONS] Directory
Options:
--help Show this usage guide
--verbose, -v Show contextual information and format for easy reading
-a Camera model name follows EXIF date time. e.g. 20120101_EOS5D.JPG
-b Camera model name precedes EXIF date time. e.g. EOS5D_20120101.JPG
-e Lower case file extension
-E Upper case file extension
-r Rename original files, NOT copy (NOT SAFE)
--prefix PREFIX File prefix
--suffix SUFFIX File suffix
--classify Classify files into YYYY/MM/DD/ folders
--maintain Maintain original filename but classify
そのまま実行すると、指定されたディレクト内のファイルを、YYYYMMDDHHMMSS.JPG(jpg)という名前でコピー。
-a / -bでカメラの機種をファイル名に追加。
-e / -Eで拡張子を小文字・大文字に変換。指定しないとオリジナルの拡張子(デフォルト)。
-rでコピーではなくリネーム。失敗するとオリジナルが消える可能性があるので危険。
–prefix / –suffixで、”PICT”とか”IMG_”をファイル名の前後に追加。
–classifyはYYYY/MM/DDというサブディレクトリを指定されたディレクトリに作成して、そこにファイルをコピー・リネーム。
–maintainは分類するのみでファイル名は維持。
全く同じ日時の写真があった場合、連番を付加するようにした。で、Mac OS XのphpだとImageMagickをサポートしていないためRAWフォーマットが読めないので、Apple Scriptをphpから呼んで対応させた。
function get_meta_as($filepath, $type){
$args = 'tell application "Image Events"
launch
set this_image to open POSIX file "' . $filepath . '"
tell this_image
set the res to the value of metadata tag "' . $type . '"
end tell
close this_image
return {res}
end tell';
exec("arch -i386 /usr/bin/osascript -e '$args'", $output, $return);
return($output[0]);
}