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
잘 활용해 보세요...
위와 같이 정보가 출력됩니다. 이제 입맛대로 소스를 작성하셔서 사용하시면 되겠습니다. - -
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
0
댓글 6개
좋은 팁 감사합니다.
제 호스팅은 exif 기능이 지원되지 않아서 사용을 못했는데
소스를 수정해야하는 문제가 있긴하지만...그래도 수정해서라도 적용을 한번 해봐야 겠네요
thank u ~
제 호스팅은 exif 기능이 지원되지 않아서 사용을 못했는데
소스를 수정해야하는 문제가 있긴하지만...그래도 수정해서라도 적용을 한번 해봐야 겠네요
thank u ~
감사합니다 ^^
근데 아무것도 안나오네요...
위설명대로 그대로 했는데..
jhead위치에 문제가 있는듯 한데
/usr/local/bin 에 넣었는데 안되서 여기저기 옮겨보고 있는데 -_-;
혹시 따로 손바야 하는거 있나요??
콘솔에서 실행하면 잘되는데.. view페이지에선 안찍히네요..=_=;
근데 아무것도 안나오네요...
위설명대로 그대로 했는데..
jhead위치에 문제가 있는듯 한데
/usr/local/bin 에 넣었는데 안되서 여기저기 옮겨보고 있는데 -_-;
혹시 따로 손바야 하는거 있나요??
콘솔에서 실행하면 잘되는데.. view페이지에선 안찍히네요..=_=;

저또한 콘솔에선 되는데..안되는군요..
jhead 를 rpm 으로 깔았고요..
그럼 아시면 답해주세요!!
jhead 를 rpm 으로 깔았고요..
그럼 아시면 답해주세요!!
별로 특별한 내용이 없어서, 안되시는 이유를 잘 모르겠습니다.
설치된 환경들을 확인해 보시면 좋겠네요...
env 로 PATH 설정내용에 해당 디렉토리가 들어있는지 확인하시구요..
jhead 위치한 곳에서 ls -l 로 실행권한이 다른 파일처럼 잘 되어 있는지도 보시구요..
그리고 소스중 $tag = ereg_replace("[ |/]","", $tag); 에서
[ 다음에 공백이 하나 있습니다. 즉 space나 / 를 없애는 문장이거든요
이상 세가지 정도 확인해 보시면 되지 않을까 싶네요..
설치된 환경들을 확인해 보시면 좋겠네요...
env 로 PATH 설정내용에 해당 디렉토리가 들어있는지 확인하시구요..
jhead 위치한 곳에서 ls -l 로 실행권한이 다른 파일처럼 잘 되어 있는지도 보시구요..
그리고 소스중 $tag = ereg_replace("[ |/]","", $tag); 에서
[ 다음에 공백이 하나 있습니다. 즉 space나 / 를 없애는 문장이거든요
이상 세가지 정도 확인해 보시면 되지 않을까 싶네요..

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