테스트 사이트 - 개발 중인 베타 버전입니다

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

· 20년 전 · 4080 · 6
일반스킨자료실에 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


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

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 6개

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

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

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

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

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

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

이상 세가지 정도 확인해 보시면 되지 않을까 싶네요..
세가지모두 제대로 되어있고요..
왜 안되는지 모르겠군요..
님이 사용하시는 직접적인 스킨(보드) 받을수있을까요?..
lib파일과 스킨공유좀 해주세요.!!
extend 에러...
정말 제대로된 팁이 없구만요.

게시판 목록

그누4 팁자료실

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