티스토리 툴바

상단이동
처음화면
모아보기
무비툰
일기
요리
그림
사진
잡생각
방명록
미류
관리자
글쓰기

달력

06

« 2013/06 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
  •  
  •  
  •  
2008/03/13 15:29

exif 테스트 웹공부2008/03/13 15:29

<?
function getExifInfo($filename,$debug=0) {
        $exposureMode = array('Auto Exposure','Manual Exposure','Auto Bracket');
        $exposureProgram = array("Not defined","Manual","Program (Auto)","Aperture priority","Shutter priority","Creative program","Action program","Portrait mode","Landscape mode");
        $whiteBalance = array("Auto WB","Manual WB");
        $meteringMode = array("Unknown","Average","CenterWeightedAverage","Spot","MultiSpot","Multi-segment","Partial");
        $flash = array("73"=>"On Compulsory Red-eye reduction","89"=>"On Auto Red-eye reduction","95"=>"On Auto Red-eye reduction");

        $erdata = @exif_read_data($filename,0,true);
        if (!$erdata||!$erdata["EXIF"]) { return; }

        $exif["Make"] = $erdata["IFD0"]["Make"]; // 제조사
        $exif["Model"] = $erdata["IFD0"]["Model"]; // 모델
        $exif["ExifVersion"] = $erdata["EXIF"]["ExifVersion"]; // EXIF 버전
        $exif["DateTime"] = $erdata["EXIF"]["DateTimeOriginal"]; // 촬영일
        $exif["Software"] = $erdata["IFD0"]["Software"]; // 사용 Software
        $exif["Width"] = $erdata["EXIF"]["ExifImageWidth"]; // 사진 크기
        $exif["Height"] = $erdata["EXIF"]["ExifImageLength"]; // 사진 크기

        $exif["ExposureMode"] = $exposureMode[$erdata["IFD0"]["ExposureMode"]]; // 노출모드
        if (!$exif["ExposureMode"]) { $exif["ExposureMode"] = $exposureMode[$erdata["EXIF"]["ExposureMode"]]; }

        $tmp =  explode("/",$erdata["EXIF"]["ExposureTime"]); // 노출시간 (셔터스피드)
        $exif["ExposureTime"] = $tmp[0]/$tmp[0]."/".$tmp[1]/$tmp[0]."s";
        $tmp=null;
        
        $tmp = explode("/",$erdata["EXIF"]["FNumber"]); // 조리개값
        $exif["FNumber"] = "F".sprintf("%3.1f",@($tmp[0]/$tmp[1]));
        $tmp=null;

        $exif["ISO"] = "ISO-".$erdata["EXIF"]["ISOSpeedRatings"];  // ISO 감도
        $exif["ExposureProgram"] = $exposureProgram[$erdata["EXIF"]["ExposureProgram"]];
        
        $exif["WhiteBalance"] = $whiteBalance[$erdata["IFD0"]["WhiteBalance"]]; // 화이트벨런스  
        if (!$exif["WhiteBalance"]) { $exif["WhiteBalance"] = $whiteBalance[$erdata["EXIF"]["WhiteBalance"]]; }
        

        $tmp = explode("/",$erdata["EXIF"]["ExposureBiasValue"]); // 노출보정
        $exif["ExposureBias"] = sprintf("%4.2f",@($tmp[0]/$tmp[1]))."EV";
        $tmp=null;
        
        $exif["MeteringMode"] = $meteringMode[$erdata["EXIF"]["MeteringMode"]]; // 측광모드

        if ($flash[$erdata["EXIF"]["Flash"]]) { $flash_str = " (".$flash[$erdata["EXIF"]["Flash"]].")"; } // 플래시사용여부
        $exif["Flash"] = @($erdata["EXIF"]["Flash"]&7)>0?"Flash fired":"Flash not fired";
        
        $tmp = explode("/",$erdata["EXIF"]["FocalLength"]); // 초점거리
        $exif["FocalLength"] = @($tmp[0]/$tmp[1])."mm";
        $tmp=null;
        
        $tmp = (int)$erdata["COMPUTED"]["CCDWidth"]; // CCD
        if ($tmp>0) {
            $exif["CCDWidth"] = $tmp."mm";
        }
        $tmp=null;

        $exif["FocalLengthIn35mmFilm"] =  $erdata["EXIF"]["FocalLengthIn35mmFilm"]." mm"; // 35인치 환산값
        $exif["DigitalZoomRatio"] = $erdata["EXIF"]["DigitalZoomRatio"]; // 줌
        $exif["FirmwareVersion"] = $erdata["MAKERNOTE"]["FirmwareVersion"]; // 펌웨어 버전
        $exif["Lens"] = $erdata["MAKERNOTE"]["UndefinedTag:0x0095"]; // 사용랜즈 Canon Body & Canon Lens Only  

        while(list($k,$v)=each($exif)) {
            if ($v&&trim($v)!="F"&&trim($v)!="ISO-"&&trim($v)!="EV"&&trim($v)!="mm"&&trim($v)!="s") { $exif_data[$k] = $v; }
        }

        if ($debug) {
            echo "<pre>";
            print_r($erdata);
            echo "</pre>";
        }
                //$re = //$exif_data[Model]."*".$exif_data[DateTime]."*".$exif_data[Software]."*".$exif_data[ExposureMode]."*".$exif_data[ExposureTime]."*".$exif_data[FNumber]."*".$exif_data[ISO]."*".$exif_data[WhiteBalance];
        //return $re;
                $re = "";
                foreach($exif_data as $key=>$val){    
                        if($key == "Make") $key = "제조사";
                        if($key == "Model") $key = "모델";
                        if($key == "DateTime") $key = "촬영일";
                        if($key == "Software") $key = "소프트웨어";
                        if($key == "ExposureMode") $key = "노출모드";
                        if($key == "ExposureTime") $key = "노출시간";
                        if($key == "FNumber") $key = "조리개";
                        if($key == "ISO") $key = "감도";
                        if($key == "ExposureProgram") $key = "노출방식";
                        if($key == "WhiteBalance") $key = "화이트발란스";
                        if($key == "ExposureBias") $key = "노출보정";
                        if($key == "MeteringMode") $key = "측광방식";
                        if($key == "Flash") $key = "플래시";
                        if($key == "FocalLength") $key = "초점거리";
                        if($key == "FocalLengthIn35mmFilm") $key = "35mm 환산";

                        if($val == "Aperture priority") $val = "조리개우선(A)";
                        if($val == "Auto Exposure") $val = "자동노출";
                        if($val == "Manual") $val = "메뉴얼(M)";
                        if($val == "Manual Exposure") $val = "수동노출";
                        if($val == "Multi-segment") $val = "멀티측광";
                        if($val == "CenterWeightedAverage") $val = "중앙부측광";
                        if($val == "Flash not fired") $val = "플래시 사용 안함";
                        if($val == "Flash fired") $val = "플래시 사용 ";
                        if($val == "Spot") $val = "스팟측광";
                       

                        if($key == "ExifVersion" || $key == "Width" ||$key == "Height" || $key == "DigitalZoomRatio" ||$key == "CCDWidth") continue;
                        $re .=  $key. " : ".$val."*";
                }
                return $re;
    }
?>
<html>
<head>
<title>eixf 보기</title>
<style type="text/css">
body,div{
        font-size:10pt;
}
#exifInfo{
        padding:10px;
        border:1px solid #c0c0c0;
        width:300px; height:100px;
        position:absolute;left:100px;top:100px;
        background:#FFF;
        display:none;
        text-align:left;
        filter:alpha(opacity=90);        
        color:gray;
}

#exifInfo ul li{
        text-indent:-20px;
        list-style:none;
        margin:4px;
}
#exifInfo #exifLogo{
        width:100%;
        font-size:12pt;
        font-weight:bold;
        background:#c0c0c0;
        padding:4px;
        color:red;
}
#exifInfo #InfoClose{
        border:0px solid;
        width:100%;
        text-align:center;
        padding:4px;
}
#exifInfo #InfoClose span{
        background:#000;
        cursor:pointer;
        padding:14px;
        margin:2px;
}
</style>
<script type="text/javascript">
function exifInfoJs(val){
        var arr = val.split("*");
        var exif = document.getElementById("exifInfo");
        var str = "<div id='exifLogo'>+ EXIF Information +</div>";
        str  += "<ul>";
        for(i=0; i<arr.length; i++){
                str += "<li>"+arr[i]+"</li>";        
        }
        str += "</ul>";
        exif.style.display = "block";
        exif.style.left = event.clientX - 20;
        exif.style.top = event.clientY+document.body.scrollTop-50;
        str += "<div id='InfoClose' onclick='exifclose()'><span>닫기</span></div>";
        exif.innerHTML = str;
}
function exifclose(){
        var exif = document.getElementById("exifInfo");
        exif.style.display = "none";
}

</script>
</head>
<body>
<!--eixf 정보 div-->
<div id="exifInfo"></div>

<img src="dsc.jpg" onClick="exifInfoJs('<?=getExifInfo("dsc.jpg")?>')">
</body>
</html>


이 플러그인 언제 만들어줄려나 티스토리...ㅡ,ㅡ;
크리에이티브 커먼즈 라이선스
Creative Commons License

'웹공부' 카테고리의 다른 글

GET, POST 방식의 처리  (0) 2008/03/13
XMLHttpRequest 객체 구하기  (0) 2008/03/13
서브쿼리문  (0) 2008/03/13
mysql 쿼리문 두번째  (0) 2008/03/13
mysql 쿼리문 모음  (11) 2008/03/13
exif 테스트  (3) 2008/03/13
금액 올림, 내림, 절삭  (0) 2008/03/13
클래스 임시 정리  (0) 2008/03/13
세션  (0) 2008/03/13
간단 자동 링크 함수  (0) 2008/03/13
쇼핑몰 이미지 스크롤러  (0) 2008/03/13
하로기의 무비툰

하로기의 무비툰

글/그림
하로기
형식/장르
공포
작품소개
영화를 보고 느낀 것들을 일기 형식으로 만든 웹툰입니다. 주로 B급공포장르가 많아요~


TAG
Posted by 하로기
익명이지만 적어도 자신만의 닉네임으로 글을 남겨주세요. 아무 의미없어 보이는 기호나 이모티콘등으로 대충 쓴 덧글은 보기 좋지 않습니다. 덧글 또한 상호 의사소통입니다. 상호간의 매너...원츄~

TRACKBACK | http://movietoon.net/trackback/811 관련글 쓰기

댓글을 달아 주세요

  1. 민트 2012/06/12 22:15  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.
    먼저 좋은 정보 포스팅 해주신점 정말 고맙습니다.

    exif 정보를 찾다가 알게되서 너무 반갑습니다.
    프로그램이나 자바스크립트를 잘몰라서 질문드립니다.

    제조사 : canon
    모델 : 500d

    이런식으로 콜론의 줄이 보여지는데요
    콜론 줄을 맞추려고 스크립트에서 분리를 해보려고 하는데 실력이 미천해 도데체 되지를 않네요

    <div style="width:500px">
    <div style="float:left; width:100px;">제조사</div>
    <div style="float:right; width:400px;">canon</div>
    </div>

    이런식으로 맞춰서 출력하려면 어떻게 해야 할까요?

    초면에 질문드리게 되서 정말 죄송하지만 마땅히 여쭤볼 곳도 없고 해서
    염치 불구하고 질문드립니다.

    감사합니다.

    • Favicon of http://movietoon.net BlogIcon 하로기 2012/06/12 23:11  댓글주소  수정/삭제

      이 소스는 제가 만든게 아니기도 하고 워낙 오래되서 기억이 가물가물하네요. 테스트해볼 환경도 아니고...

      출력되는 글들의 디자인을 할려면 꽤 손대야 할듯한데...

  2. 민트 2012/06/12 23:22  댓글주소  수정/삭제  댓글쓰기

    네 알겠습니다.
    말씀 감사하구요 .. 자주 놀러오겠습니다.

    감사합니다.