phpで画像形式の確認

chakemiです。強化合宿も最終日を迎え、一日10時間くらいPCとにらめっこしていて、ひ~ひ~言ってました。

本日は、ある目的で必要に迫られた、phpで画像の形式を確認する方法について調べました。

phpの経験が全然ないので、ちょいと調べてみると、exif拡張モジュールなんてのがあるようで exif関数を使用したら簡単に確認出来そうだったので、試してみました。

使用するにあたり、phpが–enable-exifオプションを含めてコンパイルされている必要がありました。

まず自分のテスト環境が、exifモジュールに対応してるかphpinfo()で確認。

とりあえず、すぐ試せそうなんで、適当にコマンドラインから ファイルパスを引数で渡してJPEGかそうでないかを確認させてみました。

こんな感じ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/php -q
<?php

  if(!isset($argv[1])){
      echo "ファイルを指定して下さい。\n";
      return;
  }

  echo "ファイル:". $argv[1]. "\n";

  $filepath=$argv[1];

  if(exif_imagetype($filepath)== IMAGETYPE_JPEG){
          echo "この画像はJPEGです\n";
  }else{
          echo "この画像はJPEGではありません\n";
  }

?>

※適当に書いたのをnoto師匠に手直し頂きました。

んで、こんな感じで確認します。

1
[root@localhost ~]# ./jpgcheck.php ファイルパス

今回は、確認のためかるく試しただけですが、そもそも画像ファイルなのかの確認を 第一に行いたいので、getimagesize()だとか他の方法も模索中。。。

なにか良い方法をご存知のかたはコメント頂けると嬉しいですm( )m

Comments