【PHP】画像ファイルかどうかを判別・確認する方法
カテゴリー: PHP
ここでは指定したファイルが画像ファイルかどうかを確認する方法を説明します。
ユーザーからアップロードされたファイルが画像かどうかを確認したり、あるフォルダに存在する画像ファイルのみを縮小・圧縮したいときなどに有効かと思います。
スポンサードリンク
exif_imagetype
画像ファイルかどうかを確認する場合、exif_imagetype関数を使うと便利です。
exif_imagetype(ここに画像のパスやURL)
この関数は、画像の形式を判別し、以下の定数を返してくれます(画像形式でなければfalseを返す)。
- IMAGETYPE_GIF
- IMAGETYPE_JPEG
- IMAGETYPE_PNG
- IMAGETYPE_SWF
- IMAGETYPE_PSD
- IMAGETYPE_BMP
- IMAGETYPE_TIFF_II (intel byte order)
- IMAGETYPE_TIFF_MM (motorola byte order)
- IMAGETYPE_JPC
- IMAGETYPE_JP2
- IMAGETYPE_JPX
- IMAGETYPE_JB2
- IMAGETYPE_SWC
- IMAGETYPE_IFF
- IMAGETYPE_WBMP
- IMAGETYPE_XBM
- IMAGETYPE_ICO
戻り値を単純にechoなどで出力すると、以下のように数値が返ってきます。
- 1:gif画像の場合
- 2:jpg画像の場合
- 3:png画像の場合 以下略
なお、画像ファイルかどうかを確認する関数にもうひとつgetimagesizeがありますが、getimagesizeはサイズなどの情報も返してくれますので、単純に画像形式の確認であればexif_imagetype関数の方が有意に早いです。
サンプル
ということで、画像ファイルかどうかを確認する単純なプログラムを紹介します。
<?php
//ファイルのパス
$file_pass = "ここに画像のパスまたはURL";
//まずファイルの存在を確認し、その後画像形式を確認する
if(file_exists($file_pass) && exif_imagetype($file_pass)){
echo "画像ファイルです";
}else{
echo "画像ファイルではありません(もしくはファイルが存在しません)";
}
?>
また、画像ファイルであった場合、その画像の形式が何なのかを調べる場合、以下のようにします(調べるのはgifかjpgかpng)。
<?php
//ファイルのパス
$file_pass = "ここに画像のパスまたはURL";
//まずファイルの存在を確認し、その後画像形式を確認する
if(file_exists($file_pass) && $type = exif_imagetype($file_pass)){
switch($type){
//gifの場合
case IMAGETYPE_GIF:
echo "IMAGETYPE_GIF";
break;
//jpgの場合
case IMAGETYPE_JPEG:
echo "IMAGETYPE_JPEG";
break;
//pngの場合
case IMAGETYPE_PNG:
echo "IMAGETYPE_PNG";
break;
//どれにも該当しない場合
default:
echo "gif、jpg、png以外の画像です";
}
}else{
echo "画像ファイルではありません(もしくはファイルが存在しません)";
}
?>
コメント
まだコメントはありません。
コメントフォーム