• ベストアンサー

php単体では表示されるが他のページから呼ぶと文字化けをします。

/img/のフォルダーの中から画像を取得し他のページで表示させようと思ったのですがphp単体では画像が表示されるのですが、require、include もしくは直接そのソースを貼って表示させると画像が文字化けし表示されません。 書いたソース define("TEST_READDIR", "./img/"); $handle = opendir(TEST_READDIR); rewinddir($handle); while (($entry = readdir($handle))) { $file = TEST_READDIR . $entry; if(is_file($file)) { $key = filemtime($file); $keys[] = $key; $data[$key] = $file; } } closedir($handle); if ( isset($keys) ) { rsort($keys); $fp = fopen($data[$keys[0]], "rb") or die(); print fread($fp, filesize($data[$keys[0]])); fclose($fp); } exit(0); なぜ他から呼び出すと表示されないのでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • unimentai
  • ベストアンサー率70% (34/48)
回答No.3

他の方も回答されていますが、画像がテキスト変換されてる為に起きている現象と思われます。 呼び出し側を以下のようにされては如何でしょうか? ----<< ここから >>----- <html> <head> <title>画像呼び出しテスト</title> </head> <body> <img src="さっきのソース.php" alt="今日の一枚"> </body> </html> ----<< ここまで >>---- 現在環境がないので実証は行っておりませんが、恐らくこれで上手く表示されると思います。

その他の回答 (3)

回答No.4

確認できました。 (いや、私は質問者じゃないけど。^^) <p><img src="./img.php"> </p> こんな簡単な事で、できるんですね。 応用力というか、きちんとした理解をしてい なかった気分です。^^ 質問者様には、お力になれず、勉強不足でした。^^

回答No.2

少し調べてみましたが、分かりませんでした。 Content-Type: text/html の途中で、phpから画像だけど、データーで直に引き だしてるから、文字化けするのですが、。 コンピュータ的には、画像も文字も同じデーターなので。 JavaScript のようにMIMEタイプをimage/jpgするのは、 うまくいかないし。 ただ、どうやって利用するかは分かりませんが、 <img src="./○○.jpg" alt="○○.jpg"> と、した方がわかりやすいし、処理も一つ少ないかと。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

Content-Type: text/htmlなものから、requireやincludeしようとしているとか。 そういう状況で、image/gifやapplication/octet-streamみたいなデータが現れてるから、化けてるのでは。

melll
質問者

お礼

osamuy様 ご返信ありがとうございます。 元のページにはこちらのソースを追加しているのですがこれではダメなのでしょうか? header("Content-type: image/jpeg"); 例  <?php header("Content-type: image/jpeg"); ?> <HTML> <BODY> <?php require("さっきのソース.php"); ?> </BODY> </HTML>

関連するQ&A