#author("2018-04-08T09:19:39+09:00","default:dramsukohome","dramsukohome")
[[PHP]]

*phpで、Nikonのカメラで撮ったjpeg画像から、レンズ情報を抜き出す方法 [#da3e76ee]

-引数は2つ。
-- 12-14mm のレンズを探す場合
--- php (filename.php) 12 24
-- 35mm 単焦点のレンズを探す場合
--- php (filename.php) 35
- 実行後、レンズのディレクトリが作成され、~
そこにファイルが移動される。
- 「PHP_JPEG_Metadata_Toolkit_1.12」 の場所~
[[The PHP JPEG Metadata Toolkit:http://www.ozhiker.com/electronics/pjmt/]]
- 参考サイト : [[EXIF からレンズ名を取得する(Panasonic編):http://blog.cles.jp/item/4675]]
 <?php
 
 	try{
 		include "./PHP_JPEG_Metadata_Toolkit_1.12/EXIF.php";
 		
 		//ディレクトリ
 		$dirName = "./";
 		
 		if(isset($argv[1])){
 			mkdir($argv[1]);
 
 			//ディレクトリハンドル取得
 			if ($dir = opendir($dirName)) {
 				//ファイル読み込み、表示
 				while (($file = readdir($dir)) !== false) {
 					if (substr($file,0,1) <> "."
 							and (substr($file,-3,3)=="jpg" or substr($file,-3,3)=="JPG" or substr($file,-3,3)=="Jpg")
 							and is_file($file)
 					)
 					{
 			
						$exif = get_EXIF_JPEG( $file );
			
						$exif_lens_min_Numerator=-1;
						$exif_lens_max_Numerator=-1;
							
						if(isset($exif["0"]["34665"]["Data"]["0"]["37500"]["Decoded Data"]["0"]["132"]["Data"]["0"]["Numerator"])){
							$exif_lens_min_Numerator = $exif["0"]["34665"]["Data"]["0"]["37500"]["Decoded Data"]["0"]["132"]["Data"]["0"]["Numerator"];
							$exif_lens_min_Denominator = $exif["0"]["34665"]["Data"]["0"]["37500"]["Decoded Data"]["0"]["132"]["Data"]["0"]["Denominator"];
							$exif_lens_max_Numerator = $exif["0"]["34665"]["Data"]["0"]["37500"]["Decoded Data"]["0"]["132"]["Data"]["1"]["Numerator"];
							$exif_lens_max_Denominator = $exif["0"]["34665"]["Data"]["0"]["37500"]["Decoded Data"]["0"]["132"]["Data"]["1"]["Denominator"];
							$exif_lens_min = $exif_lens_min_Numerator / $exif_lens_min_Denominator;
							$exif_lens_max = $exif_lens_max_Numerator / $exif_lens_max_Denominator;
						}
			
						if(isset($exif["0"]["34665"]["Data"]["0"]["37386"]["Data"]["0"]["Numerator"])){
							$exif_focal_length_Numerator = $exif["0"]["34665"]["Data"]["0"]["37386"]["Data"]["0"]["Numerator"];
							$exif_focal_length_Denominator = $exif["0"]["34665"]["Data"]["0"]["37386"]["Data"]["0"]["Denominator"];
							$exif_focal_length = $exif_focal_length_Numerator / $exif_focal_length_Denominator;
						}
			
						// 				print "Lens : ".$exif_lens_min."-".$exif_lens_max."mm\n";
						// 				print "focal length : ".$exif_focal_length."\n";
			
						if($argc>2 and isset($exif["0"]["34665"]["Data"]["0"]["37500"]["Decoded Data"]["0"]["132"]["Data"]["0"]["Numerator"])){
							if ($argv[1]==$exif_lens_min and $argv[2]==$exif_lens_max){
								print $file."\n";
								system('mv '.$file.' ./'.$argv[1].'/'.$file);
//								$line = trim(fgets(STDIN));
								
							}
						}elseif($argc>1  and isset($exif["0"]["34665"]["Data"]["0"]["37386"]["Data"]["0"]["Numerator"])){
							if($argv[1]==$exif_focal_length){
								print $file."\n";
								system('mv '.$file.' ./'.$argv[1].'/'.$file);
//		 						$line = trim(fgets(STDIN));
							}
						}
					}
				}
			}
				
		}else{
			print "引数をセットして下さい。";
		}
		
		
	}catch(Exception $e){
		print $file;
		print $e->getMessage();
		
	}
 ?>
* 日付データの付加 [#r02a91e5]
 <?php
 
 	try{
 		require_once "./EXIF.php";
 		
 		//ディレクトリ
 		$dirName = "./";
 		$aftDirName = "aftAddDate";
 		
 		//ディレクトリハンドル取得
 		if ($dir = opendir($dirName)) {
 			mkdir("aftAddDate");
 			
 			//ファイル読み込み、表示
 			while (($file = readdir($dir)) !== false) {
 				if (substr($file,0,1) <> "."
 						and (substr($file,-3,3)=="jpg" or substr($file,-3,3)=="JPG" or substr($file,-3,3)=="Jpg")
 						and is_file($file)
 				){
 		
 					print $file."\n";
 					$exif = get_EXIF_JPEG( $file );
 		
 					$readExifData="";					
 					$aftReplaceSpace="";
 					$aftReplaceCoron="";
 					if(isset($exif["0"]["306"]["Data"]["0"])){
 						$readExifData=$exif["0"]["306"]["Data"]["0"];
 						$aftReplaceSpace=str_replace(" ","_",$readExifData);
 						print $aftReplaceSpace."\n";
 						$aftReplaceCoron=str_replace(":","-",$aftReplaceSpace);
 						print $aftReplaceCoron."\n";
 						system("cp ".$file." ./".$aftDirName."/".$aftReplaceCoron."_".$file);
 					}
 				}
 			}
 		}
 		
 	}catch(Exception $e){
 		print $file;
 		print $e->getMessage();
 		
 	}
 ?>

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS