#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();
}
?>