EXIF(Exchangeable Image File Format) PHP 확장 기능은 디지털 카메라, 휴대전화 등 디지털 기기로 촬영한 이미지의 메타데이터를 다룰 수 있도록 지원합니다. 이 확장 기능은 이미지 파일 형식에 따라 동작하며, 이미지에 내장된 썸네일을 추출하는 데에도 활용할 수 있습니다.
PHP의 exif_imagetype() 함수는 주어진 이미지의 유형을 판별하는 역할을 합니다. 이 함수는 이미지 파일의 처음 몇 바이트를 읽어 시그니처(signature)를 검사한 뒤 해당 이미지 형식을 식별합니다. 또한 지원하지 않는 파일 형식에 대해 다른 EXIF 함수가 호출되는 것을 사전에 방지하거나, $_SERVER['HTTP_ACCEPT'] 값과 함께 사용해 브라우저에서 특정 이미지를 표시할 수 있는지 여부를 확인하는 용도로도 활용됩니다.
문법(Syntax)
integer exif_imagetype($str filename)
매개변수(Parameters)
exif_imagetype() 함수는 이미지 파일 이름을 담는 $filename 단 하나의 매개변수만 받습니다.
반환 값(Return Values)
올바른 이미지 시그니처가 발견되면 exif_imagetype()은 그에 해당하는 상수 값을 반환하고, 유효한 시그니처가 없으면 False를 반환합니다.
이미지 타입 상수 목록
| 값 | 상수 | 값 | 상수 |
|---|---|---|---|
| 1 | IMAGETYPE_GIF | 10 | IMAGETYPE_JP2 |
| 2 | IMAGETYPE_JPEG | 11 | IMAGETYPE_JPX |
| 3 | IMAGETYPE_PNG | 12 | IMAGETYPE_JB2 |
| 4 | IMAGETYPE_SWF | 13 | IMAGETYPE_SWC |
| 5 | IMAGETYPE_PSD | 14 | IMAGETYPE_IFF |
| 6 | IMAGETYPE_BMP | 15 | IMAGETYPE_WBMP |
| 7 | IMAGETYPE_TIFF_II (인텔 바이트 순서) | 16 | IMAGETYPE_XBM |
| 8 | IMAGETYPE_TIFF_MM (모토로라 바이트 순서) | 17 | IMAGETYPE_ICO |
| 9 | IMAGETYPE_JPC | 18 | IMAGETYPE_WEBP |
예제 1: JPG 이미지 확인하기
<?php
// 로컬 드라이브에서 이미지 불러오기
$filetype = exif_imagetype('C:\xampp\htdocs\test\office.jpg');
// 결과 출력
echo "The file type is: ", $filetype;
?>
위 예제에서는 다음과 같은 JPG 이미지를 사용했습니다.

실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
The file type is: 2
JPG 파일에 해당하는 상수 값 2(IMAGETYPE_JPEG)가 반환된 것을 확인할 수 있습니다.
예제 2: PNG 이미지 확인하기
이번에는 PNG 이미지로 동일한 코드를 실행해 보겠습니다.
<?php
// 로컬 드라이브에서 이미지 불러오기
$filetype = exif_imagetype('C:\xampp\htdocs\test\img46.png');
// 결과 출력
echo "The file type is: ", $filetype;
?>
위 예제에서는 다음과 같은 PNG 이미지를 사용했습니다.

실행 결과
코드를 실행하면 다음과 같은 결과가 출력됩니다.
The file type is: 3
PNG 파일에 해당하는 상수 값 3(IMAGETYPE_PNG)이 반환되는 것을 볼 수 있습니다. 이처럼 exif_imagetype() 함수를 활용하면 업로드된 파일이 실제로 어떤 이미지 형식인지 간단하게 검증할 수 있습니다.