메타정보(exif) 추출방법
수국
58.♡.160.17
2015-09-16 17:52
9,325
7
1
배포파일 : 메타정보.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
홍인님의 댓글
두 그림의 내용이 조금 다르지만 욕심 같으면 메타내용이 모두 포함되었으면 합니다. ㅎ
축하합니다. 첫댓글 포인트 37포인트를 획득하였습니다.
홍인님의 댓글의 댓글
수국님 정말 감사드리고요, 이윰에 최적화는 이윰님이 해 주실 것으로 믿고 적용은 조금 뒤로 미루겠습니다. 10년 먹은 체증이 내려가는 것 같아 정말 감사드립니다.
홍인님의 댓글
수국님의 댓글의 댓글
제가 올린건 php exif 의 기능으로 만들어지는거예요
이윰IN님의 댓글
수국님 소스를 응용해서 이윰빌더에 적용하여 배포하도록 하겠습니다.
환절기 감기조심하시고 오늘 하루도 활기차고 멋진 하루 되세요.
감사합니다.
홍인님의 댓글의 댓글
저는 학수고대만 하고 있겠습니다.
이 exif 하나 때문에 이윰빌드를 포기해야 하나 고민 많이 했거던요.
역시 기다리니 찾아오는군요.
이윰IN님의 댓글의 댓글
수국님께 다시 한번 감사드립니다. ^^