IENDEV.KR Since 2001 Login | Register

Development View


EXIF 정보를 얻어오는 방법

웹사이트에 사진을 게시할 경우 EXIF 정보를 표시할 수 있는 간단한 PHP 함수입니다. 서버상의 이미지 경로를 인자로 받아서 EXIF 문자열을 반환합니다. PHP의 exif_read_data 함수를 이용하여 작성되었고, 이미지 내부의 Key-Value를 읽어와서 조건문으로 구현합니다. 카메라 모델, 촬영모드, 측광모드, 초점 거리, ISO, 노출 시간, 노출 보정, 플래시 정보를 지원합니다.


function camera($imagePath) {


    $file_conts = "";     

    $exif = @exif_read_data($imagePath);

    if (isset($exif[Make]) || isset($exif[Model]))

    {                    

                    if (isset($exif[Make]) || isset($exif[Model])) $file_conts .= $exif[Model]." | ";

                    if (isset($exif[DateTimeOriginal])) $file_conts .= $exif[DateTimeOriginal]." | ";

                    

                     if (isset($exif[ExposureProgram])) {

                    if ($exif[ExposureProgram]==0) $file_conts .= "Auto | ";

                    else if ($exif[ExposureProgram]==1) $file_conts .= "Manual | ";

                    else if ($exif[ExposureProgram]==2) $file_conts .= "Program | ";

                    else if ($exif[ExposureProgram]==3) $file_conts .= "Aperture | ";

                    else if ($exif[ExposureProgram]==4) $file_conts .= "Shutter | ";

                    }


                     if (isset($exif[MeteringMode])) {

                    if ($exif[MeteringMode]==0) $file_conts .= "Unknow\n";

                    else if ($exif[MeteringMode]==1)$file_conts .= "Average | ";

                    else if ($exif[MeteringMode]==2) $file_conts .= "Center weighted averaget | ";

                    else if ($exif[MeteringMode]==3) $file_conts .= "Spot | ";

                    else if ($exif[MeteringMode]==4) $file_conts .= "Unknow | ";

                    else if ($exif[MeteringMode]==5) $file_conts .= "Multi Segment | ";

                    else if ($exif[MeteringMode]==6) $file_conts .= "Partial | ";

                    }

 

                      if (isset($exif[FocalLength])) {

                    $xxx = explode("/", $exif[FocalLength]);

                    $FocalLength = $xxx[0] / $xxx[1];

                    $FocalLength = "$FocalLength"."mm";

                    $file_conts .= "$FocalLength | ";

                    }

                   

                     if (isset($exif[FocalLengthIn35mmFilm])) $file_conts .= "$exif[FocalLengthIn35mmFilm]"."mm | "; 

                     if (isset($exif[COMPUTED][ApertureFNumber])) $file_conts .= "{$exif[COMPUTED][ApertureFNumber]} | ";

                    if (isset($exif[ISOSpeedRatings])) $file_conts .= "ISO $exif[ISOSpeedRatings] | ";


                      if (isset($exif[ExposureTime])) {

                    $leng=explode("/",$exif[ExposureTime]); 

                    if ($leng[0]/$leng[1] > 1) {

                    $exif[ExposureTime] = ($leng[0]/$leng[1]); //이런식으로 조작을 해서 

                    $file_conts .= "{$exif[ExposureTime]}sec | ";                

                    }

                    else $file_conts .= "{$exif[ExposureTime]}sec | ";                

                    }

                  

                     if (isset($exif[ExposureBiasValue])) {

                    $xxx = explode("/", $exif[ExposureBiasValue]);

                    $ExposureBiasValue = $xxx[0] / $xxx[1];

                    $ExposureBiasValue = substr(strval("$ExposureBiasValue"),0,4);

                    $ExposureBiasValue = $ExposureBiasValue."EV | ";

                    $file_conts .= "$ExposureBiasValue";

                    }         

    

                    if (isset($exif[Flash])) {

                    if ($exif[Flash]==16) $file_conts .= "Flash Off Compulsory";

                    else if ($exif[Flash]==73) $file_conts .= "Flash On Compulsory Red-eye reduction";

                    else if ($exif[Flash]==9) $file_conts .= "Flash On Compulsory";

                    else if ($exif[Flash]==7) $file_conts .= "Flash On";

                    else $file_conts .= "Flash Unknown";                   

                }     

    }

    return $file_conts; 

}


#사진 #PHP #EXIF #함수


73 Like it  |   0 Comment


댓글 남기기


로그인후 입력하실 수 있습니다.