exif 설치안된 경우, Jhead를 사용해서 해결하세요.. > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

exif 설치안된 경우, Jhead를 사용해서 해결하세요.. 정보

exif 설치안된 경우, Jhead를 사용해서 해결하세요..

본문

일반스킨자료실에 exif 지원되는 갤러리스킨들이 있는데,  PHP설치시 exif 모듈이 설치안된 경우에
Jhead 를 설치해서 사용해 보세요..

먼저 아래 주소에서 프로그램을 다운로드 받으세요...

http://www.sentex.net/~mwandel/jhead/
윈도우용, 리눅스용 모두 있습니다.

다운 받은 것을 원하는 디렉토리에 저장하신 후
리눅스의 경우 실행권한을 주면 준비가 끝입니다.

제 경우엔 리눅스여서 소스를 받아서  make 한후
/usr/local/bin 에 jhead 를 복사하였습니다.


다음에 할 일은  extend 디렉토리에 임의의 파일을 만들어서 함수 1개 추가하고
스킨의 view.skin.php 에 표시하는 부분 처리하면 됩니다.

1. extend/xxxxxxx.php  에 다음 함수를 추가합니다.  (파일명은 임의로 정해도 무관)


// jhead 이용한 exif 기능추가
function exif_read_data($image) {

  $program = "jhead";
  exec( "$program $image", $exif_info );

  foreach( $exif_info as $val ) {
  $arr = split(":", $val[0]);
  $tag = trim($arr[0]);

  // 영문표시되는 부분 한글로 수정, 카메라를 잘 몰라서 대충고침 ^-^

  if ($tag == "File name")  $val[0] = ereg_replace($tag, "파일명", $val[0]);
  else if ($tag == "File size")  $val[0] = ereg_replace($tag, "파일크기", $val[0]);
  else if ($tag == "File date") $val[0] = ereg_replace($tag, "파일일자", $val[0]);
  else if ($tag == "Camera make") $val[0] = ereg_replace($tag, "카메라 제조사", $val[0]);
  else if ($tag == "Camera model") $val[0] = ereg_replace($tag, "카메라 모델", $val[0]);
  else if ($tag == "Date/Time") $val[0] = ereg_replace($tag, "촬영일시", $val[0]);
  else if ($tag == "Resolution") $val[0] = ereg_replace($tag, "해상도", $val[0]);
  else if ($tag == "Flash used") $val[0] = ereg_replace($tag, "프레쉬사용", $val[0]);
  else if ($tag == "CCD Width") $val[0] = ereg_replace($tag, "CCD크기", $val[0]);
  else if ($tag == "Focal length") $val[0] = ereg_replace($tag, "Focal length", $val[0]);
  else if ($tag == "Exposure time") $val[0] = ereg_replace($tag, "노출시간", $val[0]);
  else if ($tag == "Exposure")  $val[0] = ereg_replace($tag, "노출형태", $val[0]);
  else if ($tag == "Aperture")  $val[0] = ereg_replace($tag, "조리개", $val[0]);
  else if ($tag == "ISO equiv")  $val[0] = ereg_replace($tag, "ISO equiv", $val[0]);
  else if ($tag == "Whitebalance") $val[0] = ereg_replace($tag, "화이트밸런스", $val[0]);
  else if ($tag == "Metering Mode") $val[0] = ereg_replace($tag, "Metering Mode", $val[0]);

  $tag = ereg_replace("[ |/]","", $tag);
  $rvalue[$tag] = $val[0];
  }
   
  return $rvalue;
}


2. view.skin.php 에  표시할 내용 씁니다.


  $exif = exif_read_data("{$view[file][$i][path]}/{$view[file][$i][file]}");
  if (isset($exif[Filename])) echo "$exif[Filename] <br>";
  if (isset($exif[Filesize])) echo "$exif[Filesize] <br>";
  if (isset($exif[Cameramake])) echo "$exif[Cameramake] <br>";
  if (isset($exif[Cameramodel])) echo "$exif[Cameramodel] <br>";
  if (isset($exif[DateTime])) echo "$exif[DateTime] <br>";
  if (isset($exif[Resolution])) echo "$exif[Resolution] <br>";
  if (isset($exif[Flashused])) echo "$exif[Flashused] <br>";
  if (isset($exif[CCDWidth])) echo "$exif[CCDWidth] <br>";
  if (isset($exif[Focallength])) echo "$exif[Focallength] <br>";
  if (isset($exif[Exposuretime])) echo "$exif[Exposuretime] <br>";
  if (isset($exif[Exposure])) echo "$exif[Exposure] <br>";
  if (isset($exif[Aperture])) echo "$exif[Aperture] <br>";
  if (isset($exif[ISOequiv])) echo "$exif[ISOequiv] <br>";
  if (isset($exif[Whitebalance])) echo "$exif[Whitebalance] <br>";
  if (isset($exif[MeteringMode])) echo "$exif[MeteringMode] <br>";

이상 작업 끝...

실행하면 들어있는 정보만 아래처럼 보여집니다.

파일명 : ../data/file/A_FREE/595623253_43c7615f_test2.jpg
파일크기 : 243753 bytes
카메라 제조사 : PENTAX Corporation
카메라 모델 : PENTAX *ist DS
촬영일시 : 2005:09:29 13:56:55
해상도 : 800 x 1203
프레쉬사용 : No
Focal length : 18.0mm (35mm equivalent: 27mm)
노출시간: 0.0080 s (1/125)
노출보정 : shutter priority (semi-auto)
조리개 : f/9.5
화이트밸런스 : Manual
Metering Mode: matrix


잘 활용해 보세요...
위와 같이 정보가 출력됩니다. 이제 입맛대로 소스를 작성하셔서 사용하시면 되겠습니다. - -
추천
0
  • 복사

댓글 6개

좋은 팁 감사합니다.
제 호스팅은 exif 기능이 지원되지 않아서 사용을 못했는데
소스를 수정해야하는 문제가 있긴하지만...그래도 수정해서라도 적용을 한번 해봐야 겠네요

thank u ~
감사합니다 ^^
근데 아무것도 안나오네요...
위설명대로 그대로 했는데..

jhead위치에 문제가 있는듯 한데
/usr/local/bin 에 넣었는데 안되서 여기저기 옮겨보고 있는데 -_-;
혹시 따로 손바야 하는거 있나요??
콘솔에서 실행하면 잘되는데.. view페이지에선 안찍히네요..=_=;
별로 특별한 내용이 없어서,  안되시는 이유를 잘 모르겠습니다.
설치된 환경들을 확인해 보시면 좋겠네요...

env 로 PATH 설정내용에 해당 디렉토리가 들어있는지 확인하시구요..

jhead 위치한 곳에서 ls -l 로 실행권한이 다른 파일처럼 잘 되어 있는지도 보시구요..

그리고 소스중  $tag = ereg_replace("[ |/]","", $tag);  에서
[ 다음에 공백이 하나 있습니다.  즉 space나 / 를 없애는 문장이거든요

이상 세가지 정도 확인해 보시면 되지 않을까 싶네요..
세가지모두 제대로 되어있고요..
왜 안되는지 모르겠군요..
님이 사용하시는 직접적인 스킨(보드) 받을수있을까요?..
lib파일과 스킨공유좀 해주세요.!!
© SIRSOFT
현재 페이지 제일 처음으로