画像ファイルの内容を見て種類(jpeg,gif...)を判断する方法
拡張子がない画像ファイル、拡張子があてにならない画像ファイルなどでも、画像の形式を判断する方法。
たとえば、こんなときです。
- 拡張子は.gifなのに中身はjpeg画像だった
- 拡張子がないけど何の画像?
そこで getimagesize() 。
get image size という名前なので、画像のサイズを取得するだけかと思って、GD関連のマニュアルを確認するまで、気づきませんでした。
こんな風にすると
$data = getimagesize('/path/to/image.jpg');
こんな配列が返ってきます
array(7) {
[0]=>
int(300)
[1]=>
int(300)
[2]=>
int(2)
[3]=>
string(24) "width="300" height="300""
["bits"]=>
int(8)
["channels"]=>
int(3)
["mime"]=>
string(10) "image/jpeg"
}
幅、高さにつづいて、数値で2と出ているところが画像の形式を現しています。定数 IMAGETYPE_XXX と比較して、JPEGなのかGIFなのかPNGなのか……を判断できます。