- ベストアンサー
getimagesizeで画像がなかった場合の処理
getimagesizeを使って画像のサイズ一覧を取得するプログラムを作っています。 画像ファイル名は規則正しい数字の番号を振ってあります。 規則に従いループさせているのですが、画像がなかった場合、 うまく動作してくれません。 画像の大きさがある程度あるので横幅の10pxで判断しています。 $filename= "xxx.jpg"; list($width,$height)=getimagesize("$filename"); if($width > 10){ //あった場合の処理 }else{ //なかった場合の処理 } getimagesizeを使って画像がなかった場合、すり抜ける方法はありますでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
失敗した時は、falseとE_WARNINGを返すので、 以下のようにすればできるかも知れないです。 error_reporting(E_ALL ^E_WARNING); $filename= "xxx.jpg"; if(list($width,$height)=getimagesize("$filename")){ //あった場合の処理 }else{ //なかった場合の処理 } error_reporting(E_ALL); 乱暴ですけど…。 http://jp.php.net/manual/ja/function.error-reporting.php http://jp.php.net/manual/ja/function.getimagesize.php
その他の回答 (4)
せめてFTP接続が可能なアカウントでもあれば、FTP関数で・・・ と思ったのですが、それも無いんですかね。 ちょっと他には思いつきません。
画像が置いてあるサーバーで、下記のようなスクリプトを置いて、 それにhttp://・・・でアクセスする事は、可能ですか? もし可能なら、一覧を取得出来ると思います。 <?PHP $img_dir = "./"; print `ls $img_dir`; ?>
外部なら、fopen、include、system関数でwget・・・方法はありますが、 どれも重くて使い物にならなくなりそうですね。 もし画像が置いてあるサーバーでスクリプトを動かせるのであれば、 そのサーバーで、所定のディレクトリにある画像ファイル一覧を返すスクリプトを仕込むのがスマートで素軽い方法でしょう。
補足
そうなんです。 fopen、include、system等では重過ぎて使えません。 外部のサーバーではディレクトリにアクセスできないようになっているのですが、それでも所定のディレクトリにある画像ファイル一覧を取得する事は可能でしょうか? 質問ばかりで申し訳ないのですが、是非ご教授して頂ければと思います。 よろしくお願いします。
画像の大きさをgetimagesizeで取得する前に file_exists関数で、ファイルの存在を確認するようにすれば、 良いのではないかと思います。
補足
ありがとうございます。 画像ファイルは外部サーバーの為、file_exists等の関数は使えない様です。 fopen関数を使うと過去ログで見かけましたが、画像数が数千件ある為、動作が非常に重くなってしまいます。 単純に外部サーバーの画像有無を調べる方法はないでしょうか? よろしくお願いします。
補足
度々、ありがとうございます。 外部というのは、私が管理している物ではなく他人が使っているサーバーになります。 やはり、fopen等を使って時間をかけるしかないでしょうか・・・