PHPのexif_imagetype()関数で画像形式を判定する方法
EXIF(Exchangeable Image File Format)は、デジタルカメラやスマートフォンなどで撮影された画像のメタデータを扱うためのPHP拡張機能です。この拡張機能は画像ファイルの形式に依存して動作し、画像に埋め込まれたサムネイルを取得することもできます。
exif_imagetype()関数は、指定された画像の形式(タイプ)を判定するために使用されます。この関数は画像ファイルの先頭の数バイトを読み込み、そのシグネチャ(識別符号)を照合することで画像形式を特定します。また、サポートされていないファイル形式に対して他のEXIF関数が呼び出されるのを防ぐ目的でも活用できます。さらに、$_SERVER['HTTP_ACCEPT']と組み合わせれば、閲覧中のブラウザが特定の画像形式を表示できるかどうかを確認することも可能です。
構文
integer exif_imagetype($str filename)
パラメータ
exif_imagetype()関数が受け取る引数は$filenameのみです。このパラメータには、判定対象となる画像ファイルのパスまたはファイル名を指定します。
戻り値
正しいシグネチャが検出された場合、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(Intelバイト順) | 16 | IMAGETYPE_XBM |
| 8 | IMAGETYPE_TIFF_MM(Motorolaバイト順) | 17 | IMAGETYPE_ICO |
| 9 | IMAGETYPE_JPC | 18 | IMAGETYPE_WEBP |
例1:JPEG画像の判定
次の例では、ローカルドライブ上のJPG画像を読み込み、その形式を判定しています。
<?php
// ローカルドライブから画像を読み込む
$filetype = exif_imagetype('C:\xampp\htdocs\test\office.jpg');
// 出力
echo "The file type is: ", $filetype;
?>
ここでは以下のJPG画像を使用しています。

出力結果
The file type is: 2
戻り値が「2」であることから、この画像がIMAGETYPE_JPEG(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
戻り値が「3」となっており、これはIMAGETYPE_PNG(PNG形式)に対応します。このように、exif_imagetype()関数を使えばファイル拡張子に頼らず、ファイルの中身から実際の画像形式を確実に判別できます。
-
PHP – exif_read_data()関数の使い方を徹底解説
PHPのexif_read_data()関数は、画像ファイルからEXIF(Exchangeable Image File Format)ヘッダーを読み取るための関数です。この関数を使うことで、画像ファイルに埋め込まれたすべてのEXIFヘッダー情報を抽出できます。 構文 Array exif_read_data( str $file, str $section=null, bool $arrays=false, bool $thumbnail=false ) パラメータ exif_read_data()関数は、以下の4つのパラメータを受け付けます。 $file − 画像
-
PHPのimageflip()関数の使い方とサンプルコード
imageflip()関数は、指定されたモードに従って画像を反転させるために使用されるPHPの組み込み関数です。水平方向、垂直方向、あるいはその両方への反転が可能で、画像処理を行う際に非常に便利な機能です。 構文 bool imageflip(img, mode) パラメータ img: imagecreatetruecolor()などの画像作成関数によって生成された画像リソースを指定します。 mode: 反転のモードを指定します。指定できる値は以下の3種類です。 modeに指定できる値 IMG_FLIP_HORIZONTAL:画像を水平方向(左右)に反転します。 IMG_FLIP_VER