메타정보(exif) 추출방법 > 시즌3 공유자료실

본문 바로가기

시즌3 공유자료실

메타정보(exif) 추출방법

배포파일 : 메타정보.jpg (194.1K)
다운로드횟수 : 2|최종수정일 : 2015-09-16 17:55:52

본문

현재 메타정보를 사용중에 있습니다.

이윰빌더는 구조적으로 그누보드랑 변수가 좀 달라서 수정을 좀 해야했습니다.

일단 저 같은 경우 모든 게시판에 이미지가 있을 경우 메타정보가 나오게 했습니다.

물론 메타정보가 없는 사진인 경우는 안나오겠지요.

만약 게시판별로 할 경우에는 스킨 게시판의 view.skin.php를 수정하면 될 듯 합니다.

 

수정파일

/eyoom/core/board/view.skin.php

 

1. 제일 상단에 



<style type="text/css">
<!--
.exif {
    font-family: "굴림", "돋움";
    color: #000000;
    font-size: 12px;
    line-height: 30px;
    width: 100%;
}

-->
</style>
<script language="javascript">
function exif_view(n){
    view = document.getElementById("exif["+n+"]");
    if(view.style.display == "inline"){
        view.style.display = "none";
    }else{
        view.style.display = "inline";
    }

}
</script>

 

 

이부분을 삽입하세요 => 메타정보버튼을 누르면 메타정보가 아래로 나오는 스크립트입니다.

 

2. 수정전



// 파일 출력
    $v_img_count = count($view['file']);
    if($v_img_count) {
        $file_conts = "<div id=\"bo_v_img\">\n";

        for ($i=0; $i<=count($view['file']); $i++) {
            if ($view['file'][$i]['view']) {
                //echo $view['file'][$i]['view'];
                $file_conts .= get_view_thumbnail($view['file'][$i]['view']);

            }
        }
        $file_conts .= "</div>\n";
    }
    $view_content = $eb->eyoom_content($view['content']);

 

 

파일출력하는 부분이 있습니다.

여기에 메타정보 소스를 삽입합니다. 

수정후



// 파일 출력
    $v_img_count = count($view['file']);
    if($v_img_count) {
        $file_conts = "<div id=\"bo_v_img\">\n";

        for ($i=0; $i<=count($view['file']); $i++) {
            if ($view['file'][$i]['view']) {
                //echo $view['file'][$i]['view'];
                $file_conts .= get_view_thumbnail($view['file'][$i]['view']);

//exif 정보 삽입시작

                $exif = @exif_read_data("{$view[file][$i][path]}/{$view[file][$i][file]}");
                if (isset($exif[Make]) || isset($exif[Model])){
                    $file_conts .= "<div class='exif'><a onclick='exif_view($i)' style='cursor:hand'>▒▒ <b>촬영정보</b> ▒▒</a><br><div id='exif[$i]' style='font-family: \"굴림\", \"돋움\"; font-size: 12px; line-height: 18px; display:none;'>\n" ;
                    //$exif = @exif_read_data("{$view[file][$i][path]}/{$view[file][$i][file]}");
                    if (isset($exif[Make]) || isset($exif[Model])) $file_conts .= "카메라모델 : $exif[Make] - $exif[Model]<br>\n";
                    if (isset($exif[DateTimeOriginal])) $file_conts .= "촬영일시 : $exif[DateTimeOriginal]<br>\n";
                    if (isset($exif[COMPUTED][Width]) || isset($exif[COMPUTED][Height])) $file_conts .= "원본 이미지크기 : {$exif[COMPUTED][Width]} x {$exif[COMPUTED][Height]} 픽셀<br>\n";
                     // 촬영모드
                      //촬영모드
                    if (isset($exif[ExposureProgram])) {
                    if ($exif[ExposureProgram]==0) $file_conts .= "촬영모드 : Auto Mode\n";
                    else if ($exif[ExposureProgram]==1) $file_conts .= "촬영모드: M모드<br>\n";
                    else if ($exif[ExposureProgram]==2) $file_conts .= "촬영모드: 프로그램모드<br>\n";
                    else if ($exif[ExposureProgram]==3) $file_conts .= "촬영모드: 조리개모드<br>\n";
                    else if ($exif[ExposureProgram]==4) $file_conts .= "촬영모드: 셔트스피드모드<br>\n";
                    }
                    //측광모드
                    if (isset($exif[MeteringMode])) {
                    if ($exif[MeteringMode]==0) $file_conts .= "측광모드 : Unknow\n";
                    else if ($exif[MeteringMode]==1)$file_conts .= "측광모드 : Average<br>\n";
                    else if ($exif[MeteringMode]==2) $file_conts .= "측광모드 : Center weighted averaget<br>\n";
                    else if ($exif[MeteringMode]==3) $file_conts .= "측광모드 : Spot<br>\n";
                    else if ($exif[MeteringMode]==4) $file_conts .= "측광모드 : Unknow<br>\n";
                    else if ($exif[MeteringMode]==5) $file_conts .= "측광모드 : Multi Segment<br>\n";
                    else if ($exif[MeteringMode]==6) $file_conts .= "측광모드 : Partial<br>\n";
                    }

                    //초점거리    
                    if (isset($exif[FocalLength])) {
                    $xxx = explode("/", $exif[FocalLength]);
                    $FocalLength = $xxx[0] / $xxx[1];
                    $FocalLength = "$FocalLength"."mm";
                    $file_conts .= "초점거리: $FocalLength<br>\n";
                    }

                    if (isset($exif[FocalLengthIn35mmFilm])) $file_conts .= "35mm환산거리 : $exif[FocalLengthIn35mmFilm]"."mm<br>\n"; // 35인치 환산값 

                    if (isset($exif[COMPUTED][ApertureFNumber])) $file_conts .= "조리개 : {$exif[COMPUTED][ApertureFNumber]}<br>\n";
                    if (isset($exif[ISOSpeedRatings])) $file_conts .= "ISO : $exif[ISOSpeedRatings]<br>\n";
                    //화이트밸런스
                    if (isset($exif[WhiteBalance])) {
                    if ($exif[WhiteBalance]==0)$file_conts .= "화이트밸런스 : Auto <br>\n";
                    else if ($exif[WhiteBalance]==1) $file_conts .= "화이트밸러스 : Manual <br>\n";
                    }

                    //노출시간
                       if (isset($exif[ExposureTime])) {
                    $leng=explode("/",$exif[ExposureTime]); 
                    if ($leng[0]/$leng[1] > 1) {
                    $exif[ExposureTime] = ($leng[0]/$leng[1]); //이런식으로 조작을 해서 
                    $file_conts .= "노출시간 : {$exif[ExposureTime]}sec<br>\n";                
                    }
                    else $file_conts .= "노출시간 : {$exif[ExposureTime]}sec<br>\n";                
                    }

                    //노출보정    
                    if (isset($exif[ExposureBiasValue])) {
                    $xxx = explode("/", $exif[ExposureBiasValue]);
                    $ExposureBiasValue = $xxx[0] / $xxx[1];
                    $ExposureBiasValue = substr(strval("$ExposureBiasValue"),0,4);
                    $ExposureBiasValue = $ExposureBiasValue."EV";
                    $file_conts .= "노출보정(EV): <font color=#FFCC00>$ExposureBiasValue</font><br>\n";
                    }
                    if (isset($exif[COMPUTED][CCDWidth])) $file_conts .= "CCD : {$exif[COMPUTED][CCDWidth]}<br>\n";

                    //플래쉬
                    if (isset($exif[Flash])) {
                    if ($exif[Flash]==16) $file_conts .= "Flash: Off Compulsory<br>\n";
                    else if ($exif[Flash]==73) $file_conts .= "Flash: On Compulsory Red-eye reduction<br>\n";
                    else if ($exif[Flash]==9) $file_conts .= "Flash: On Compulsory<br>\n";
                    else if ($exif[Flash]==7) $file_conts .= "Flash: On<br>\n";
                    else $file_conts .= "Flash: Unknow<br>\n";
                    }
                    $file_conts .= "</div></div><br>\n" ;
                }
    //exif 정보 삽입마침

            }
        }
        $file_conts .= "</div>\n";
    }
    $view_content = $eb->eyoom_content($view['content']);

 

빨간색글씨로 넣은 부분을 삽입하면 됩니다.

저도 짜집기하고 카메라 메타정보중에 필요한 부분을 여러번 수정한 파일이라 오류가 있을 수 있습니다.

 

필요하신 분들이 있어 조심스레 올려봅니다.

1
로그인 후 추천 또는 비추천하실 수 있습니다.

댓글목록7

홍인님의 댓글

profile_image
- 첨부파일 : 20150916_184458.png (122.9K) - 다운로드
첨부된 그림처럼 그림 하단에 일목요연하게 나열되면 좋겠네요.
두 그림의 내용이 조금 다르지만 욕심 같으면 메타내용이 모두 포함되었으면 합니다. ㅎ

축하합니다. 첫댓글 포인트 37포인트를 획득하였습니다.

홍인님의 댓글의 댓글

profile_image
- 첨부파일 : 20150916_184517.png (40.8K) - 다운로드
두번쨰 그림입니다.
수국님 정말 감사드리고요, 이윰에 최적화는 이윰님이 해 주실 것으로 믿고 적용은 조금 뒤로 미루겠습니다. 10년 먹은 체증이 내려가는 것 같아 정말 감사드립니다.

홍인님의 댓글

profile_image
빨간부분은 보통 exif.lib.php 로 인클루드 하는 내용이 맞나요?

수국님의 댓글의 댓글

profile_image
미리 만들어진 모듈로 하는 경우도 있고요
제가 올린건 php exif 의 기능으로 만들어지는거예요

이윰IN님의 댓글

profile_image
수국님 귀한 소스 공개해 주셔서 감사드립니다.
수국님 소스를 응용해서 이윰빌더에 적용하여 배포하도록 하겠습니다.
환절기 감기조심하시고 오늘 하루도 활기차고 멋진 하루 되세요.
감사합니다.

홍인님의 댓글의 댓글

profile_image
이윰님 수고 해 주세요.
저는 학수고대만 하고 있겠습니다.
이 exif 하나 때문에 이윰빌드를 포기해야 하나 고민 많이 했거던요.
역시 기다리니 찾아오는군요.

이윰IN님의 댓글의 댓글

profile_image
홍인님의 다리를 부여잡기 위해서라도 빨리 서둘러야 겠군요.
수국님께 다시 한번 감사드립니다. ^^
전체 49 건 - 2 페이지
사이트 내 전체검색