
初心者です。わかりにくいかもしれませんがよろしくお願いします。
特定のディレクトリにある画像ファイルをすべて取得して
サムネイル表示しようとしています。
画像サイズを取得するのに、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ランキング
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
配列の値の更新方法について
-
PHPの構文で間違えが分からない
-
SFTPなどは使わないホームペー...
-
$_SESSIONに渡した後はそのまま...
-
($_POST['email']??"", ・・・...
-
phpのエラーについて
-
PHP MySql 画像を取得
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpの問い合わせフォームを作っ...
-
composerをインストールしたい...
-
PHP8でWarning:Undefined varia...
-
marginの値でマイナス値を設定...
-
phpでcookieがうまく保存されない
-
SplFileObject を利用したとき...
-
PHPSpreadsheetを使って関数を...
-
PHPSpreadsheetによる書き出し...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
PostgreSQLからCSV形式でエクス...
-
PHPを使って、別サイトの一部を...
-
BASIC認証のフォームをデザイン...
-
入力した部分を表示させたまま...
-
【初心者】XAMPPのapacheの(恐...
-
ログイン機の付きの掲示板サイ...
-
ワードプレスサイト PHP8.0.25...
-
Postgresの特定のカラムからス...
-
PHPで画像の渡しが上手く行きま...
-
PHPの勉強してます。 配列のと...
おすすめ情報