初心者です。わかりにくいかもしれませんがよろしくお願いします。
特定のディレクトリにある画像ファイルをすべて取得して
サムネイル表示しようとしています。
画像サイズを取得するのに、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で質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- その他(開発・運用・管理) バッチファイルで特定のファイル・ディレクトリ以外を削除する方法について 4 2022/05/31 14:03
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- UNIX・Linux 空のディレクトリで dir を行ったとき 4 2023/05/05 17:54
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
図に示す階層構造で,現在のデ...
-
Subversionで、ファイルをリネ...
-
FTPコマンドでディレクトリごと...
-
【PHP】declare命令で”Fatal er...
-
VB.NET 最下位のディレクトリ名...
-
[ ディレクトリ '.' は書き込み...
-
絶対パス?絶対アドレス?意味...
-
exec()で他ディレクトリのexeプ...
-
PHP 削除やコピーが出来ない
-
visualstudioでc#のdllができない
-
currentディレクトリ内で、任意...
-
バッチを用いたフォルダの自動移動
-
/usr/local/lib/phpとはどうい...
-
EXEを起動するとDLLが見つから...
-
Subversionのリポジトリの削除
-
mingwにパスを通せたのですが、...
-
fopenでファイルが開かない場合...
-
CFileDialogの最初のディレクト...
-
ローカルサーバーでパーミッシ...
-
ASPのページだけ表示できません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
visualstudioでc#のdllができない
-
ファイルアップロードに関して...
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
fopenでファイルが開かない場合...
-
rmdirでフォルダが消せません
-
絶対パス?絶対アドレス?意味...
-
コマンドプロンプトを指定のデ...
-
VB.NET 最下位のディレクトリ名...
-
VB2008でFTPでのディ...
-
DLL のロードの順序
-
MkDir関数
-
ファイル選択ダイアログで選択...
-
図に示す階層構造で,現在のデ...
-
[ ディレクトリ '.' は書き込み...
-
JAVA内で複数のファイルを削除...
おすすめ情報