사진 촬영조건(exif,meta) 데이터 보여주기 > Web Development

본문 바로가기
  • kb@lovelet.com
사이트 내 전체검색

RESOURCES Web Development

사진 촬영조건(exif,meta) 데이터 보여주기

페이지 정보

본문

제로보드로 사이트를 구성하다보면 갤러리는 기본적으로 만들어지는 것같습니다.
최근 디카의 보급이 확산되면서 고급기종의 디카로 사진을 배우는 사람들도 점차 늘어나는 것같습니다.

일부 사진사이트에서만 보여주는 Exif 정보를 손쉽게 보여주는 기능을 만들어봤습니다.

function read_exif($file) {
if(@exif_read_data($file,'IFD0')) {
$exif = @exif_read_data($file,0,true);
echo "촬영일자 : ".$exif[EXIF][DateTimeOriginal]." ";
echo "기종 : ".$exif[IFD0][Model]." ";
echo "조리개 : ".$exif[COMPUTED][ApertureFNumber]." ";
echo "노출 : ".$exif[EXIF][ExposureTime]." sec ";
} else echo "EXIF 정보가 없습니다.";
}

를 lib.php의 맨 하단에 추가합니다.
그리고 갤러리 스킨의 적당한 위치에
read_exif($data[file_name1]);
read_exif($data[file_name2]); 를 추가해주시면 됩니다.

추가나 수정을 하실분은
print_r($exif);
를 추가해서 배열을 잘 확인해보시기 바랍니다.
측광방법, 후레쉬사용여부, 초점거리, 렌즈 등등의 다양한 정보를 확인하실 수 있습니다.

단!!
PHP 버전이 4.3.0 이상이어야하고
컴파일시 --enable-exif 가 설정되어있어야합니다.
<?phpinfo(); ?>
한줄짜리 화일을 만들고 익스에서 열어보시면 PHP와 아파치에 관한 정보가 나타납니다.
PHP 버전과 EXIF Support enabled 항목을 잘 살펴보시고 헛고생하지 마시기 바랍니다.
직접 서버를 관리하시는 분이라면 --enable-exif 항목을 추가하시고 다시 컴파일하시면 됩니다.

Share Post:

댓글목록

profile_image

박판수님의 댓글

박판수 작성일 아이피 58.♡.201.34

    안녕하세요,
저는 개인 사진홈피를 운영하고 있는 사람입니다.
비록 초라한 홈피이지만 사진 밑에 exif정보가 나오도록 하려는데 몹시 힘이듭니다.
저는 제로보드 5.0을 사용하고 있으며 선생님께서 설명하신 위의 lib.php 하단에 넣고 FTP로 업로으
하였드니 제 홈피 상단에 위의 글씨가 그대로 보입니다.
그리고 '갤러리 스킨'의 적당한 위치에 read_exif($data[file_name1]);라고 말씀하셨는데
정확하게 어떤 갤러리 스킨 인지? 또 몇째줄에 넣어야 되는지 자세한 답변 주시면 감사하겠습니다.

참고로 저의 홈피는 <a href=http://www.pps153.com입니다. target=_blank class='AutoLink'>http://www.pps153.com입니다.</a>
저의 메일은 <a href=mailto:ppspd@naver.com>ppspd@naver.com</a>입니다.

날마다 기쁘고 즐거운 나날 되시길 바랍니다.^^

profile_image

규범^-^*님의 댓글

규범^-^* 작성일 아이피 180.♡.175.230

제가 올려드린 팁은 제로보드4 기준의 팁입니다.
아직까지 제가 제로보드xe를 사용하지 않아 어떤 식으로 적용을 하셔야하는지는 잘 모르겠습니다..
아마도 제로보드 사이트에 xe용으로 적용가능한 팁들이 있을 겁니다.^^
번거로우시겠지만, 제로보드 공식사이트에서 exif 정보 관련 검색을 해보시면 찾으실 수 있을 것 같습니다.

profile_image

박판수님의 댓글

박판수 작성일 아이피 58.♡.200.125

    안녕하세요
며칠 전에 문의한 박판수입니다.
인터넷에서 소스를 구해서 View.php에 아래의 소스를 넣어서
간신히 출력은 되었습니다.
그런데 문제가 사진의 '촬영날짜'가 출력되지 않고 '수정한 날짜'가 '촬영한
날짜'로 잘못 출력이 됩니다.
저는 PHP 잘 모르기에 어느부분을 수정해야만
'촬영날짜'로 출력이 될 수 있는지
지도편달해주시면 감사하겠습니다.

*************

먼저 스킨폴더의 view.php파일의 가장 아래부분에 아래의 문장을 추가해줍니다.

<?
function print_exif($upload_image)
{
        if(strpos($upload_image, "img") == 0)
                return;

        $file = substr($upload_image, 9);
        $pos = strpos($file, ' border');
        $file = substr($file, 0, $pos);
        $exif = exif_read_data($file, 'EXIF');
        if ($exif != false)
        {
                echo "<table width='600' align='center' border='0'>";
                echo "<tr><td align='center' style='margin:5 0 5 5;'>";

                $exp_tmp = split('/', $exif[ExposureTime]);
                if(($exp_tmp[0] < $exp_tmp[1]) && ($exp_tmp[0] != 0))
                {
                        $exp_tmp[1] = (int)($exp_tmp[1] / $exp_tmp[0]);
                        $exp = "1/$exp_tmp[1]";
                }
                elseif($exp_tmp[1] != 0)
                        $exp = $exp_tmp[0] / $exp_tmp[1];
                else
                        $exp = $exp_tmp[0];
               
                $fnum = split('/', $exif[FNumber]);
                if($fnum[1] != 0)
                        $f = $fnum[0] / $fnum[1];
                else
                        $f = $fnum[0];
               
                $flen = split('/', $exif[FocalLength]);
                if($flen[1] != 0)
                        $fl = $flen[0] / $flen[1];
                else
                        $fl = $flen[0];

                $expbias = split('/', $exif[ExposureBiasValue]);
                if($expbias[1] != 0)
                        $expb = $expbias[0] / $expbias[1];
                else
                        $expb = $expbias[0];

                $expb = substr($expb, 0, 3);
                if($expb > 0)
                        $expb = "+".$expb;

                echo "카메라 : $exif[Model] <font color='#DDDDDD'>|</font> 셔터속도 : $exp <font color='#DDDDDD'>|</font> 조리개 : F$f<br>";
                echo "초점 길이 : $fl mm <font color='#DDDDDD'>|</font> 노출 보정 : $expb EV <font color='#DDDDDD'>|</font>촬영 날짜 : $exif[DateTime]<br>";
                echo "</table>";
        }
        else
        {
                echo "<b>No Exif Data...</b>";
        }
}
?>

위의 문장을 추가 했다면 view.php파일에서 이미지를 출력하는 부분이 있습니다.
보통 파일 소스의 아래부분에 있습니다.
보통 첫번째 첨부파일이면 <?=$upload_image1?>,
두번째 첨부파일이면 <?=$upload_image2?> 으로 되어 있습니다.

이 부분을 아래와 같이 수정해주면 EXIF정보가 출력됩니다.

<?=$upload_image1?>
<?print_exif($upload_image1);?>

<?=$upload_image1?>
<?print_exif($upload_image2);?>

profile_image

규범^-^*님의 댓글

규범^-^* 작성일 아이피 166.♡.36.11

    <a href=http://www.lovelet.com/bbs/view.php?id=tip&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=179 target=_blank class='AutoLink'>http://www.lovelet.com/bbs/view.php?id=tip&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=179</a>
위의 팁을 참고하셔도 좋으실 듯 합니다.
올려주신 소스에서는
촬영 날짜 : $exif[DateTime] 여기에서 $exif[DateTimeOriginal]로 바꾸시면 될 것 같습니다~

profile_image

박판수님의 댓글

박판수 작성일 아이피 58.♡.200.30

    선생님의 성실하신 답변에
마음 속 깊이 진심으로 감사를 드립니다.

늘 건강하시고
날마다 기쁘고 좋은 일들이
가득하시길 진심으로
기원합니다.

박판수 올림

  <a href=http://www.pps153.com target=_blank class='AutoLink'>http://www.pps153.com</a>

profile_image

박판수님의 댓글

박판수 작성일 아이피 58.♡.200.94

    안녕하세요,
선생님의 도움으로 홈페이지가 잘 운영되고있습니다.
마지막으로 한가지 아쉬운게 있다면 ISO감도의 출력부분이 보이지 않아서
문의합니다.
아래의 소스에서 어느부분을 수정해야 되는지...
번거로우시드라도 자세한 답변 주시면 감사하겠습니다.


<?
function print_exif($upload_image)
{
        if(strpos($upload_image, "img") == 0)
                return;

        $file = substr($upload_image, 9);
        $pos = strpos($file, ' border');
        $file = substr($file, 0, $pos);
        $exif = exif_read_data($file, 'EXIF');
        if ($exif != false)
        {
                echo "<table width='600' align='center' border='0'>";
                echo "<tr><td align='center' style='margin:5 0 5 5;'>";

                $exp_tmp = split('/', $exif[ExposureTime]);
                if(($exp_tmp[0] < $exp_tmp[1]) && ($exp_tmp[0] != 0))
                {
                        $exp_tmp[1] = (int)($exp_tmp[1] / $exp_tmp[0]);
                        $exp = "1/$exp_tmp[1]";
                }
                elseif($exp_tmp[1] != 0)
                        $exp = $exp_tmp[0] / $exp_tmp[1];
                else
                        $exp = $exp_tmp[0];
               
                $fnum = split('/', $exif[FNumber]);
                if($fnum[1] != 0)
                        $f = $fnum[0] / $fnum[1];
                else
                        $f = $fnum[0];
               
                $flen = split('/', $exif[FocalLength]);
                if($flen[1] != 0)
                        $fl = $flen[0] / $flen[1];
                else
                        $fl = $flen[0];

                $expbias = split('/', $exif[ExposureBiasValue]);
                if($expbias[1] != 0)
                        $expb = $expbias[0] / $expbias[1];
                else
                        $expb = $expbias[0];

                $expb = substr($expb, 0, 3);
                if($expb > 0)
                        $expb = "+".$expb;

                echo "카메라 : $exif[Model] <font color='#DDDDDD'>|</font> 셔터속도 : $exp <font color='#DDDDDD'>|</font> 조리개 : F$f<br>";
                echo "초점 길이 : $fl mm <font color='#DDDDDD'>|</font> 노출 보정 : $expb EV <font color='#DDDDDD'>|</font>촬영 날짜 : $exif[DateTime]<br>";
                echo "</table>";
        }
        else
        {
                echo "<b>No Exif Data...</b>";
        }
}
?>

위의 문장을 추가 했다면 view.php파일에서 이미지를 출력하는 부분이 있습니다.
보통 파일 소스의 아래부분에 있습니다.
보통 첫번째 첨부파일이면 <?=$upload_image1?>,
두번째 첨부파일이면 <?=$upload_image2?> 으로 되어 있습니다.

이 부분을 아래와 같이 수정해주면 EXIF정보가 출력됩니다.

<?=$upload_image1?>
<?print_exif($upload_image1);?>

<?=$upload_image1?>
<?print_exif($upload_image2);?>

profile_image

규범^-^*님의 댓글

규범^-^* 작성일 아이피 166.♡.36.11

    이 곳에서는 제가 답변하는 데 제약이 있습니다.(html 소스 등을 작성시에 출력이 안되는 문제..)
질문 게시판에 남겨주시면 답변 드리도록 하겠습니다.
<a href=http://www.lovelet.com/bbs/zboard.php?id=qna target=_blank class='AutoLink'>http://www.lovelet.com/bbs/zboard.php?id=qna</a>

Sign In
OR
Don't have an account? SIGN UP

Keywords

Visits

접속자

Total Visits
1,894,882