[게시판] 메타정보(exif) 추출방법
첨부파일
-
1 2015-09-16 17:55:52
짧은주소
- - 짧은주소: http://v2.eyoom.net/bbs/?t=1m7 주소복사
본문
현재 메타정보를 사용중에 있습니다.
이윰빌더는 구조적으로 그누보드랑 변수가 좀 달라서 수정을 좀 해야했습니다.
일단 저 같은 경우 모든 게시판에 이미지가 있을 경우 메타정보가 나오게 했습니다.
물론 메타정보가 없는 사진인 경우는 안나오겠지요.
만약 게시판별로 할 경우에는 스킨 게시판의 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']);
빨간색글씨로 넣은 부분을 삽입하면 됩니다.
저도 짜집기하고 카메라 메타정보중에 필요한 부분을 여러번 수정한 파일이라 오류가 있을 수 있습니다.
필요하신 분들이 있어 조심스레 올려봅니다.
Progress Bar 16%
댓글목록
홍인님의 댓글
첨부된 그림처럼 그림 하단에 일목요연하게 나열되면 좋겠네요.
두 그림의 내용이 조금 다르지만 욕심 같으면 메타내용이 모두 포함되었으면 합니다. ㅎ
축하합니다. 첫댓글 포인트 37포인트를 획득하였습니다.
홍인님의 댓글
두번쨰 그림입니다.
수국님 정말 감사드리고요, 이윰에 최적화는 이윰님이 해 주실 것으로 믿고 적용은 조금 뒤로 미루겠습니다. 10년 먹은 체증이 내려가는 것 같아 정말 감사드립니다.
홍인님의 댓글
빨간부분은 보통 exif.lib.php 로 인클루드 하는 내용이 맞나요?
수국님의 댓글
미리 만들어진 모듈로 하는 경우도 있고요
제가 올린건 php exif 의 기능으로 만들어지는거예요
이윰IN님의 댓글
수국님 귀한 소스 공개해 주셔서 감사드립니다.
수국님 소스를 응용해서 이윰빌더에 적용하여 배포하도록 하겠습니다.
환절기 감기조심하시고 오늘 하루도 활기차고 멋진 하루 되세요.
감사합니다.
홍인님의 댓글
이윰님 수고 해 주세요.
저는 학수고대만 하고 있겠습니다.
이 exif 하나 때문에 이윰빌드를 포기해야 하나 고민 많이 했거던요.
역시 기다리니 찾아오는군요.
이윰IN님의 댓글
홍인님의 다리를 부여잡기 위해서라도 빨리 서둘러야 겠군요.
수국님께 다시 한번 감사드립니다. ^^