PHP 使用照片 Exif 日期、時間當檔名 來做 Rename 動作

照片太多來不及整理, 經過電腦的搬來搬去後, 建立、修改日期都已經不是當時日期, 要回想就更困難了~

於是採用更懶惰的作法, 以年為單位來整理照片, 把照片依照 "年-月-份 時.分.秒.jpg" 來存檔, 全部丟入同一年份的資料夾, 暫時就當做整理完了~ XD

PHP 使用照片 Exif 日期、時間當檔名 來做 Rename 動作

對於剛從記憶卡抓下來的檔案, 還來得及的話, 可以直接修改下述程式直接改成上述格式的檔名.

註: 此程式對 *.3gp, 抓取檔案修改時間當檔名

  1. vim rename_3gp.php
    <?php
    date_default_timezone_set('Asia/Taipei');
    foreach (glob('*.3gp') as $filename) {
        echo "mv $filename \"" . date('Y-m-d H.i.s', filemtime($filename)) . ".3gp\"\n";
    }
    ?>
  2. php rename_3gp.php > rename.sh
  3. sh rename.sh

下述因為目錄已經複製太多台電腦, 日期已經毀於一旦, 所以要抓照片的 Exif 資料來建立檔名.

  • 註1: 因為有版本新舊、相機不同, 所以下面有不少判斷來處理. 若還有漏判斷的, 請再跟我說, 我再來補上~
  • 註2: 此程式只有針對 *.JPG, 要用其它檔名請自行修改
  1. vim exif_rename.php
    <?php
    date_default_timezone_set('Asia/Taipei');
    
    //print_r(exif_read_data('IMG_5737.JPG'));
    foreach (glob('*.JPG') as $filename) {
        $exifdata = exif_read_data($filename);
        if (isset($exifdata['DateTime']) && !empty($exifdata['DateTime']))
            echo "mv $filename \"" . str_replace(':', '.', $exifdata['DateTime']) . ".jpg\"\n";
        else if (isset($exifdata['DateTimeOriginal']) && !empty($exifdata['DateTimeOriginal']))
            echo "mv $filename \"" . str_replace(':', '.', $exifdata['DateTimeOriginal']) . ".jpg\"\n";
        else if (isset($exifdata['DateTimeDigitized']) && !empty($exifdata['DateTimeDigitized']))
            echo "mv $filename \"" . str_replace(':', '.', $exifdata['DateTimeDigitized']) . ".jpg\"\n";
        else if (isset($exifdata['FileDateTime']) && !empty($exifdata['FileDateTime']))
            echo "mv $filename \"" . date('Y-m-d H.i.s', $exifdata['FileDateTime']) . ".jpg\"\n";
        else
            echo "$filename FIXME\n";
    }
    ?>
  2. php exif_rename.php > rename.sh
  3. sh rename.sh

相關網頁


關於「Tsung」

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
分類: Programming,標籤: , , , 。這篇內容的永久連結

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料