照片太多來不及整理, 經過電腦的搬來搬去後, 建立、修改日期都已經不是當時日期, 要回想就更困難了~
於是採用更懶惰的作法, 以年為單位來整理照片, 把照片依照 "年-月-份 時.分.秒.jpg" 來存檔, 全部丟入同一年份的資料夾, 暫時就當做整理完了~ XD
PHP 使用照片 Exif 日期、時間當檔名 來做 Rename 動作
對於剛從記憶卡抓下來的檔案, 還來得及的話, 可以直接修改下述程式直接改成上述格式的檔名.
註: 此程式對 *.3gp, 抓取檔案修改時間當檔名
- 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"; } ?>
- php rename_3gp.php > rename.sh
- sh rename.sh
下述因為目錄已經複製太多台電腦, 日期已經毀於一旦, 所以要抓照片的 Exif 資料來建立檔名.
- 註1: 因為有版本新舊、相機不同, 所以下面有不少判斷來處理. 若還有漏判斷的, 請再跟我說, 我再來補上~
- 註2: 此程式只有針對 *.JPG, 要用其它檔名請自行修改
- 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"; } ?>
- php exif_rename.php > rename.sh
- sh rename.sh
相關網頁
- Exiv2 - Image metadata library and tools
- Exif TIFF Tag DateTimeOriginal, code 36867 (0x9003)
- What Exif Date and Time Tag in Images Is: Date Time vs Date Time Original vs Date Time Digitized!
- php-reader - The best PHP library for Object-Oriented media file information reading and writing.
- php-mp4info - PHP class to read meta data and cue points from an MP4 file (MP4/M4V/F4V)