mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Sunday, April 29, 2007

PHP exif_read_data 함수: 디카 JPG 사진 촬영 정보(EXIF) 읽기


디카 등으로 찍은 사진 파일에서, 카메라 모델명/촬영 날짜/렌즈 초점 거리/조리개/셔터 속도 등의 메타 정보를 기록한 부분을 Exif 라고 합니다. PHP에서 jpg 파일의 메타 정보를 읽는 예제입니다.

exif_read_data() 함수를 사용하는데, 기본 내장 함수가 아니라서, 외부 모듈을 로딩해 주어야만 합니다. 참고: ▶▶ 윈도우용 PHP, Exif 익스텐션(모듈;Extension) 설치/인식 방법

다음 예제에서, EXIF.MakerNote 등의 이진 데이터는 출력에서 제외했습니다.

EXIF 출력 예제


소스 파일명: example.php
(현재 디렉토리에, 디카로 찍은 test.jpg 라는 이름의 사진 파일이 있어야 실행됩니다.)
<html>
<head>
<title>PHP Example</title>
</head>

<body>

<?php

  $filename = "test.jpg";

  // 파일에 EXIF 정보가 기록되어 있는지 확인
  if (exif_read_data($filename, 'IFD0'))
    echo "EXIF 데이터 발견<br />\n";
  else
    echo "EXIF 없음<br />\n";



  echo "<br /><br /><br />\n\n\n"; // 줄바꿈



  $exif = exif_read_data($filename, 0, true);

  foreach ($exif as $key => $section) {
    foreach ($section as $name => $val) {
      if ($key == "EXIF") {
        if ($name == "MakerNote" ||
            $name == "ComponentsConfiguration" ||
            $name == "FileSource" ||
            $name == "SceneType" ||
            $name == "CFAPattern"
            )
          continue;
      }
      echo "$key.$name: $val<br />\n";
    }
  }



?>

</body>
</html>



실행 결과 화면:
(Nikon D40X 로 찍은 사진이라면, 예를 들어 다음과 같이 나옵니다:)
D:\Z>php example.php
<html>
<head>
<title>PHP Example</title>
</head>

<body>

EXIF 데이터 발견<br />
<br /><br /><br />


FILE.FileName: test.jpg<br />
FILE.FileDateTime: 1177761556<br />
FILE.FileSize: 250799<br />
FILE.FileType: 2<br />
FILE.MimeType: image/jpeg<br />
FILE.SectionsFound: ANY_TAG, IFD0, EXIF<br />
COMPUTED.html: width="873" height="594"<br />
COMPUTED.Height: 594<br />
COMPUTED.Width: 873<br />
COMPUTED.IsColor: 1<br />
COMPUTED.ByteOrderMotorola: 0<br />
COMPUTED.ApertureFNumber: f/8.0<br />
COMPUTED.UserComment: LEAD Technologies Inc. V1.01<br />
IFD0.Make: NIKON CORPORATION<br />
IFD0.Model: NIKON D40X<br />
IFD0.XResolution: 72/1<br />
IFD0.YResolution: 72/1<br />
IFD0.ResolutionUnit: 2<br />
IFD0.Software: andoWKS15<br />
IFD0.DateTime: 2007:04:27 23:56:11<br />
IFD0.YCbCrPositioning: 2<br />
IFD0.Exif_IFD_Pointer: 340<br />
IFD0.CustomRendered: 0<br />
IFD0.ExposureMode: 0<br />
IFD0.WhiteBalance: 0<br />
IFD0.DigitalZoomRatio: 1/1<br />
IFD0.FocalLengthIn35mmFilm: 157<br />
IFD0.SceneCaptureType: 0<br />
IFD0.GainControl: 1<br />
IFD0.Contrast: 0<br />
IFD0.Saturation: 0<br />
IFD0.Sharpness: 2<br />
IFD0.SubjectDistanceRange: 0<br />
EXIF.ExposureTime: 10/10000<br />
EXIF.FNumber: 80/10<br />
EXIF.ExposureProgram: 2<br />
EXIF.ISOSpeedRatings: 400<br />
EXIF.ExifVersion: 0221<br />
EXIF.DateTimeOriginal: 2007:04:27 23:56:11<br />
EXIF.DateTimeDigitized: 2007:04:27 23:56:11<br />
EXIF.CompressedBitsPerPixel: 2/1<br />
EXIF.ExposureBiasValue: 0/6<br />
EXIF.MaxApertureValue: 50/10<br />
EXIF.MeteringMode: 5<br />
EXIF.LightSource: 0<br />
EXIF.Flash: 0<br />
EXIF.FocalLength: 1050/10<br />
EXIF.UserComment: LEAD Technologies Inc. V1.01<br />
EXIF.SubSecTime: 30<br />
EXIF.SubSecTimeOriginal: 30<br />
EXIF.SubSecTimeDigitized: 30<br />
EXIF.FlashPixVersion: 0100<br />
EXIF.ColorSpace: 1<br />
EXIF.ExifImageWidth: 850<br />
EXIF.ExifImageLength: 571<br />
EXIF.SensingMethod: 2<br />

</body>
</html>


D:\Z>php example.php > out.html
D:\Z>


php example.php > out.html
이렇게 하면 출력 결과 화면이 out.html 이라는 파일로 하드에 저장됩니다.



Perl에서는 더 자세한 촬영 정보를 구할 수 있습니다: ▶▶ Perl 펄] EXIF 정보 읽기, 디카 촬영 정보 출력 소스; Exif Info Dump




tag: php
PHP
tag: camera
카메라 | 디카 DSLR | 사진용품 사용기

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top