写真の整理(RAWに対応他)

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]);
}
タイトルとURLをコピーしました