วัน: 20 เมษายน 2013

1 ภาพ 1,000 ข้อมูล1 ภาพ 1,000 ข้อมูล

ต้องการจะเก็บภาพโดยเก็บตามวันที่ ที่โดนถ่าย เหมือนใน 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 ดึงข้อมูลออกมาให้ใช้จัดการกับรูปได้ จะย้ายภาพไปเก็บไว้ตามวันที่ที่ถ่าย หรือตามสถานที่

<?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>';