• ベストアンサー

getimagesize()を使用して画像の種類を取得するには?

getimagesizeを使用して画像の種類(JPEG,GIFなど)を取得したいのですがなかなかうまくいきません。ソースは以下の通りです。 <?php $image = $_POST['image']; if(isset($_POST['add'])){ $img_type = getimagesize($image); if($img_type['mime'] == "image/jpeg"){ print"JPEGです。"; }elseif($img_type['mime'] == "image/png"){ print"PNGです。"; }else{ print"JPEG,PNG以外です。"; } } ?> <form action="this.php" method="post"> <input type="file" name="image"> <input type="submit" name="add" value="チェック!"> </form> よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

リファレンスをよく読みましょう。 getimagesize()で得た配列から画像のタイプを調べるには3番目の要素の数値で判定するか、image_type_to_mime_type()を使ってMIMEタイプを取得して判定するかです。

itmedia_search
質問者

補足

回答ありがとうございました。 3番目ですね。3番目にしたのですが、なぜか取得してくれません。いつも変数に入っているのは空なのです。 なぜなのでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

皆さんの回答をまとめましょう <form>にenctype="multipart/form-data"を指定して $_FILES['image']['tmp_name']で取得 getimagesizeの3番目(添え字番号は2)で判定(mimeで判定も間違いではないですが本来の目的はmime type出力用に後で追加されたものなので) <?php if(isset($_POST['add'])){ $image = $_FILES['image']['tmp_name']; $img_type = getimagesize($image); if($img_type[2] == IMAGETYPE_JPEG){ print"JPEGです。"; }elseif($img_type[2] == IMAGETYPE_PNG){ print"PNGです。"; }else{ print"JPEG,PNG以外です。"; } } ?> <form action="this.php" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit" name="add" value="チェック!"> </form>

itmedia_search
質問者

お礼

大変参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.3

画像ファイルが取得できないのは フォームタグに enctype="multipart/form-data" が入っていないからではないでしょうか。

itmedia_search
質問者

お礼

回答ありがとうございます。 ご指摘どおりタグを入力してみましたが、取得できないようです。 どうぞよろしくお願いします。

すると、全ての回答が全文表示されます。
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

よく見たら判定以前の問題ではないですか・・・ <input type="file">で送られてきたものは$_POSTには入っていません。$_FILESに入っています。 http://www.php.net/manual/ja/features.file-upload.php これを見てプログラムを直してみて下さい。

itmedia_search
質問者

お礼

回答ありがとうございます。 試してみましたが、$_POST['image'] には何か入っているようですが $_FILES['image'] には何も入らないようです。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A