에디터로 올린 이미지에 EXIF 표시 방법 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

에디터로 올린 이미지에 EXIF 표시 방법 정보

에디터로 올린 이미지에 EXIF 표시 방법

본문

혹시나 해서 올려봅니다. 지나가시다가 머리 식히러 오신 PHP 고수님들

한번 읽고 지적해 주세요.


게시판에서 일반 파일첨부 방식이 아닌
에디터를 이용해서 이미지를 첨부했을 시
해당 이미지에 EXIF 정보를 레이어로 표시할려고 합니다.

파일 첨부 방식은 파일마다 각각 파일고유 주소값을 쉽게 알아내서
마우스 오버시 레이어가 제대로 동작하는데
제가 가지고 있는 게시판은 이미지를 무조건 에디터로 첨부하여 올리기 때문에
게시물의 본문 내용속에 이미지태그가 포함되어 있습니다
그래서 본문속에 있는 이미지태그를 알아내고 개수를 파악하고
레이어 관련 이벤트를 각각주면서 이미지의 EXIF 정보를 표시해보고자 하는데

문법은 전혀 몰라서 짜집기한 해두었는데 동작자체를 안하네요
어디가 틀렸는지 이렇게 하면 안된다는지하는 조언을 구하러 왔습니다
전체가 다 엉망인 소스같아서 질문하기 조차 부끄럽네요

레이어관련과 EXIF 소스는 정상이고
제일 상단에 있는 게시판의 view 페이지의 소스가 문제입니다.


해결해 주시는 분께는 약소하지만
제 회원님들께 배포예정인 아래 사진홈페이지를 설치하여 드리겠습니다.

http://jihoo.kr

감사합니다.


<?
$arr = explode("<IMG", $view[content]); //본문에서 <IMG 태그로 구분하여 개수를 알아낸다
$HtmlDoc =  $view[content];      

    for ($i=1; $i<count($arr); $i++) {    // 실제 이미지 개수는 구분개수 보다 1개가 작다

    
$pos1= stristr($HtmlDoc,'<IMG');     // <IMG 로 시작하는 부분부터의 문자열을 가져온다
$pos2= strpos($pos1,'>');             // > 로 닫히는 부분까지 저장한다


$result1 = stristr(substr($pos1,0,$pos2+1),'http');    
$pos3 = strpos($result1,'"');
$img_src[$i] = stristr(substr($result1,0,$pos3),'http');    // 이미지의 주소를 알아낸다

      // exif div만들기
      if(@exif_read_data($img_src[$i],'IFD0')) {
          $exif_div[$i]= "exif".$i;
      // onmouseover효과주기
// $show[$i]="<IMG onclick='exif_window($exif_div[$i])'";
$show[$i]="<IMG onMouseOver=exif_over($exif_div[$i]) onMouseOut=exif_out($exif_div[$i])";
$pos2 = str_replace('<IMG',$show[$i],$pos2);

$view[content] = str_replace('<IMG',$pos2,$view[content]);   // 원문에 IMG 속성만 변경한 것을 다시 집어 넣는다
        
          read_exif($img_src[$i],$exif_div[$i]);

      }
$HtmlDoc = substr($HtmlDoc, $pos2+1);        //  속성값이 추가된 부분까지 잘라내고르고 이후부분 부터 다시 반복한다

}
?>

<scRIPT LANGUAGE="Javascript">
<!--
function exif_over(exif_div){  // exif 보이기
var mPointX, mPointY, sPointY, rPointY,
/* 이벤트발생 위치 알아내기*/
mPointX = window.event.clientX;
mPointY = window.event.clientY;
/* 스크롤바 위치 알아내기 */
sPointY = document.body.scrollTop;
/* 스크롤바의 움직임에 따른 포인트 위치 */
rPointY = mPointY + sPointY;
/* DIV의 넓이와 높이 */
tWidth = 300;
tHeight = 100;
/* 메뉴가 나타날 가로 위치 계산 */
if(mPointX + tWidth > document.body.clientWidth - 15) {
  x = mPointX - tWidth - 15
}else {
  x = mPointX
}
/* 메뉴가 나타날 세로 위치 계산 */
if(mPointY + tHeight > document.body.clientHeight - 15) {
  y = rPointY - tHeight -15
}else {
  y = rPointY
}
eval(exif_div).style.left = x; // 메뉴 보일 가로 위치
eval(exif_div).style.top = y; // 메뉴 보일 세로 위치
eval(exif_div).style.display="block";
}
function exif_out(exif_div)  {  // exif 없애기
eval(exif_div).style.display="none";
}
//-->
</scRIPT>
<?
function read_exif($file,$exif_div) {
if(@exif_read_data($file,'IFD0')) {
  $exif = @exif_read_data($file,0,true);
  echo "<style type='text/css'>";
  echo "<!--";
  echo "#$exif_div {";
  echo " position:absolute;";
  echo " width:230px;";
  echo " height:200px;";
  echo " padding:8px 10px 5px 10px;";
  echo " z-index:1;";
//  echo " background: url(../skin/board/poriter_poll_board/img/exif_bg.png) no-repeat; ";
  echo "  background: #FFFFFF ";
  echo "  filter:progid:DXImageTransform.Microsoft.DropShadow(offx=1,offy=1,color=#333333,positive=true);";
  echo " filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70,finishopacity=70,style=1,startx=0,finishx=100,finishx=100,finishy=100);";
  echo "}";
  echo "-->";
  echo "</style>";
  echo "<div id=$exif_div 'display:none'>";
  echo "<img src='../skin/board/poriter_poll_board/img/exif_title.png' 'margin:0px 0px 5px 0px'>";
  echo "<br>ㆍ모델명 : ".$exif[IFD0][Model]."<br>";
  echo "ㆍ촬영일자 : ".$exif[EXIF][DateTimeOriginal]."<br>";
  echo "ㆍISO감도 : ".$exif[EXIF][ISOSpeedRatings]."<br>";
  echo "ㆍ조리개값 : ".$exif[COMPUTED][ApertureFNumber]."<br>";
//  $exif[EXIF][FocalLength]=str_replace('/1','',$exif[EXIF][FocalLength]);
  echo "ㆍ초점거리 : ".$exif[EXIF][FocalLength]."mm<br>";
  $ExposureMode = $exif[IFD0][ExposureMode];
  switch ($ExposureMode){
  case 0;
  echo "ㆍ노출모드 : 자동노출 <br>";
  break;
  case 1;
  echo "ㆍ노출모드 : 수동노출 <br>";
  break;
  case 2;
  echo "ㆍ노출모드 : 브라켓노출  <br>";
  break;
  default;
  echo "ㆍ노출모드 : 알수없음 <br>";
  break;
  }
  echo "ㆍ노출시간 : ".$exif[EXIF][ExposureTime]."s<br>";
  echo "ㆍ사진크기 : ".$exif[COMPUTED][Width]."x".$exif[COMPUTED][Height]."<br>";
  echo "</div>";
// print_r($exif);
}
}
?>


긴 글 읽어주셔서 감사합니다

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT