昔のデジカメのファイルの日付 解決編

シェルコマンドだけの解決を考えたができそうにないのでPHPのスクリプトで解決した。以下がそのコードです。

exifに関連する関数を使い情報を取得しています。

<?php
// コマンドライン引数で対象ディレクトリを指定
$d = dir($_SERVER['argv'][1]);
// ディレクトリを繰り返し読み込む
while(false !== ($e = $d->read())){
  if(preg_match('/.?\.(jpg)|(JPG)$/',$e)){
    $exif = exif_read_data($_SERVER['argv'][1] . '/' . $e , 0, true);
    if(preg_match('/[pP][iI][cC].?/', $e)){
      $a = preg_grep("/^TimeDate=/",preg_split("/[\s,]+/", $exif["APP12"]['Info']));
      $tt = substr($a[4], 9);
      if(strlen($tt) != 2){
        $t =  $tt - date('Z');
        touch($_SERVER['argv'][1] . '/' . $e, $t);
        echo $_SERVER['argv'][1] . '/' . $e ."->" . date('Y/m/d H:i:s', $t) . "\n";
      }
    }
    if(substr($e,0,3) == 'DSC'){
      $dt = split('[:\ ]',$exif['EXIF']['DateTimeOriginal']);
      $t = mktime($dt[3], $dt[4], $dt[5], $dt[1], $dt[2], $dt[0]);
      touch($_SERVER['argv'][1] . '/' . $e, $t);
     echo $_SERVER['argv'][1] . '/' . $e . '->' . $exif['EXIF']['DateTimeOriginal'] ."\n";
     }
  }
}

$d->close();
?>

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください