
初心者です。わかりにくいかもしれませんがよろしくお願いします。
特定のディレクトリにある画像ファイルをすべて取得して
サムネイル表示しようとしています。
画像サイズを取得するのに、getimagesize関数を使いますが、
//対象ディレクトリ
$opdir = "./"; //img2ディレクトリ
$dir = opendir($opdir);
while(
($ent = readdir($dir)) !== false ) {
$str = strstr($ent,".");
$imginfo = getimagesize($ent,$image_info);
var_dump($imginfo);
}
こんな感じで、同一の階層にある画像はサイズがきちんと取得できるのですが、
//対象ディレクトリ
$opdir = "../"; //img1ディレクトリ
のように、別階層のディレクトリを指定すると、
エラー表示になってしまいます。
エラー内容
Warning: getimagesize(aisatu.gif): failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\test\img1\img2\img.php on line 27
bool(false)
別の階層の画像サイズは取得できないのでしょうか。
それとも方法が間違っているのでしょうか。
No.2ベストアンサー
- 回答日時:
#1 の方の補足になりますが、
『getimagesizeに渡すパラメータにはファイルへのPATHも含めましょう』
という事です。
具体的には以下のようにして下さい。
<?php
$opdir = "./";
$dir = opendir($opdir);
while( ($ent = readdir($dir)) !== false ) {
if ( $ent != "." && $ent != ".." ) {
$ent = "$opdir$ent";
$imginfo = getimagesize($ent,$image_info);
var_dump($imginfo);
}
}
?>
getimagesizeに限らず、ファイルを扱う際には必ずPATHを含めるような
癖をつけておくと良いかもしれません。
お忙しいところ、詳しいご説明をありがとうございました。
表示させるのを画像だけにするため、何とか試行錯誤して以下のようにしてみました。
$kaku = array(".gif",".jpg",".png");//表示させるファイルの拡張子
while(
($ent = readdir($dir)) !== false ) {
$str = strstr($ent,".");
if (array_search($str,$kaku) !== false ) {
$ent = $opdir . $ent;
$imginfo = getimagesize($ent,$image_info);
これで何とか思い通りに動いてくれました。
ありがとうございます。
そしてとても申し訳ないのですが、もう一つとんでもなく無知な質問をしてもよろしいでしょうか。
if ( $ent != "." && $ent != ".." ) {
の、"." と ".." というのは、何を表しているのでしょうか。
read()の出力結果を見ると、確かにファイルパスと一緒に"."と".."が出てきたので気になっていたのですが、
調べてもわかりませんでした。
申し訳ありませんが、よろしくお願いします。
No.3
- 回答日時:
"." と ".." は、それぞれ、カレントディレクトリと親ディレクトリとなります。
詳しくは、以下の参照ページをご覧下さい。
# 尚、Windowsでは"dir /a"とする事で、
# "ls -la"と同様な結果を得る事が出来ます。
参考URL:http://www.ipe.tsukuba.ac.jp/~muto/uxdir.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Subversionのリポジトリの削除
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
IIS+PHP スクリプトから仮想デ...
-
FTPでのファイルとディレクトリ...
-
Subversionで、ファイルをリネ...
-
環境の設定について・・・
-
makefile でファイルをコピーす...
-
VB2008でFTPでのディ...
-
Permission denied in
-
fopenでファイルが開かない場合...
-
JAVA内で複数のファイルを削除...
-
DLL のロードの順序
-
LoadLibraryの戻り値(HMODULE)...
-
コマンドプロンプトを指定のデ...
-
visualstudioでc#のdllができない
-
glob関数で日本語文字が取得で...
-
VB.NET 最下位のディレクトリ名...
-
PHPのif文でその処理を途中で抜...
-
ボタンのクリック数を合計保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
makefile でファイルをコピーす...
-
現在位置より2つ上のディレク...
-
visualstudioでc#のdllができない
-
JAVA内で複数のファイルを削除...
-
rmdirでフォルダが消せません
-
バッチを用いたフォルダの自動移動
-
glob関数で日本語文字が取得で...
-
Subversionで、ファイルをリネ...
-
Makefile.inとMakefile.am
-
O/Rマッパーの選定
-
WSHやVBSについて
-
DLL のロードの順序
-
絶対パス?絶対アドレス?意味...
-
LoadLibraryの戻り値(HMODULE)...
-
ツリーメニューを縮小させたい
-
wordpressの記事をカスタマイズ...
-
アプリケーション・ディレクト...
おすすめ情報