ต้องการจะเก็บภาพโดยเก็บตามวันที่ ที่โดนถ่าย เหมือนใน Camera Roll เพราะว่าภาพ TIFF, JPEG, WAV จะมีข้อมูล meta data ที่เรียกว่า Exchangeable image file format (Exif) ที่จะใส่ข้อมูลที่ถูกบันทึกไว้ตอนที่ถ่ายไว้โดยใช้กล้องดิจิติล มีข้อมูลสำคัญๆ อย่าง ถ่ายกับกล้องอะไร Manufacturer, Model เวลาที่ภาพถูกถ่าย Date and Time (original) มีการแต่งภาพรึเปล่า เมื่อไหร่ Date and Time (digitized) และถ่ายที่ไหน
ใน php เราสามารถใช้ function exif_read_data ดึงข้อมูลออกมาให้ใช้จัดการกับรูปได้ จะย้ายภาพไปเก็บไว้ตามวันที่ที่ถ่าย หรือตามสถานที่
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php /* fix maximum execution time */ set_time_limit(0); /* find file */ $root = 'Photos' ; echo '<dl>' ; foreach ( glob ( $root . "/*.{jpeg,JPEG,jpg,JPG}" , GLOB_BRACE) as $filename ) { if ( $exif = exif_read_data( $filename , 'IFD0' )) { $date = date ( 'Y-m-d' , strtotime ( $exif [ 'DateTimeOriginal' ])); /* create folder */ $dir = $root . '/' . $date ; if (! is_dir ( $dir )) { mkdir ( $dir , 0644, true); } /* move file */ $path = explode ( '/' , $filename ); $newFile = $dir . '/' . $path [1]; rename( $filename , $newFile ); echo '<dt>' , $filename , '</dt>' , '<dd>' , $newFile , '</dd>' ; } } echo '</dl>' , '<h1>Compleate!</h1>' ; |