image1.phpを表示するHTMLでイメージが表示されません。

解決済みの質問

image1.phpを表示するHTMLでイメージが表示されません。

image1.phpを表示するHTMLでイメージが表示されません。


<!-- form1.html -->

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>form1</title>
</head>
<body>
※イメージを表示<br>
<img src='image1.php' />
</body>
</html>


<!-- image1.php-->

<?php
chdir('data');
$path = 'image1.jpg';
$rpath = realpath($path);
$size = filesize($rpath);
$file = @fopen($rpath,'rb') or exit('ファイルが開けません。');
$img = fread($file,$size);
fclose($file);
header('Content-type','image/jpeg');
echo $img;
?>

イメージとしてデータを送信するPHPと、そのPHPをイメージとして表示するHTMLです。
HTMLからアクセスしてイメージを表示させたいのですが、どのようにしたらいいか教えてください。

投稿日時 - 2010-06-08 18:34:19

連想キーワード:

QNo.5954189

すぐに回答ほしいです

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

まだダメ?
#ANo2.で文字化けでテキストが表示されるということは、改行や空白文字が出力されていないでしょうか? <?php は 1行目にありますか? 前に改行されてないですか?
ちなみに複数のサーバで試したけれど、質問者さまのスクリプトもきちんと動作しますよ。
他にいろいろな方法がありますので一応…。(これまでダメなら多分ダメですが)
<?php
$img = "./data/image1.jpg";
-------------------------------------
$fh = fopen($img, 'rb');
header("Content-Type: image/jpeg");
header("Content-Length: " . filesize($img));
fpassthru($fh);
fclose($fh);
-------------------------------------
header('Content-type: image/jpeg');
header("Content-Length: " . filesize($img));
readfile("$img);
-----------------------------------
header('Content-type: image/jpeg') ;
echo file_get_contents($img);
------------------------------------

基本的に、header("Content-Type: image/jpeg"); してますから、正しいかどうかは別としてinclude($img);でもrequire($img);でも何でも出力されるはずですよ。
もしかするとブラウザの問題かも。キャッシュをクリアしたり、別のブラウザでも試してみると原因が分かるかもしれません。

投稿日時 - 2010-06-12 11:12:13

お礼

返信が送れて申し訳ございません。
><?php は 1行目にありますか? 前に改行されてないですか?
上記を読んでいて思うところがあり、修正したところ画像が表示されました!
本当にありがとうございます。

実は、OKWaveにソースを載せるにあたり、一部修正した部分がありました。
<?phpの上の段に、<!-- 6.2.2 イメージファイルの読み込みと出力 -->とコメントを入れていたんですが、これを消してソースを載せてました。
このコメントをソースに入れると、「画像ファイル "view-source:http://localhost/pdt/image1.php" は壊れているため、表示できませんでした。」と出ました。
ブラウザの問題やSkypeの拡張機能が原因という指摘のサイトもあり、試したのですが上手くいかずに悩んでいました。
しかし私の方の検索エンジンで一番上に来るサイトに、「画像の情報の中に「ゴミ」が混入しているのが原因」という指摘がありました。
私に読解力がなく気付けませんでしたが、これが答えだったようです。

JaneDueさん、本当にありがとうございました。

投稿日時 - 2010-06-14 09:55:42

ANo.4

20人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(3件中 1~3件目)

ANo.3

mpx

順を追って確認してみては如何でしょうか?
パスなどファイルの配置関係の不備の可能性も有ります。

1.image1.php を直接ブラウザでアクセスし画像の表示有無やエラー有無を確認する
  $rpathの内容をechoしてみるのも良いかも  
2.form1.html で<img src= でimage1.jpgを指定して確認

投稿日時 - 2010-06-08 22:58:24

補足

返信が送れて、すみません。
1ですが、image1.phpを直接ブラウザで確認してみたところ、http://localhost/pdt/image1.phpと表示されます。
 ブラウザのタブにはimage1.php(JPEG画像)と表示されてます。
 $rpathの内容はC:\apache\htdocs\pdt\data\image1.jpgとなっています。
 pdtフォルダにform1.htmlやimage1.phpが入っています。
 dataフォルダにはimage1.jpgが入っています。

2ですが、form1.htmlで<img src='image1.jpg' />と指定をして表示はされませんでした。
 img src='data/image1.jpg'だと表示されます。

投稿日時 - 2010-06-09 10:19:19

ANo.2

header('Content-type: image/jpeg');
readfile('./data/image1.jpg');
ではダメなの?

投稿日時 - 2010-06-08 21:54:36

補足

返信が送れて、すみません。
上記のように修正してみたところ、大量の文字化けが表示されました。

投稿日時 - 2010-06-09 09:49:22

ANo.1

単純に
× header('Content-type','image/jpeg');
○ header("Content-Type:image/jpeg");

では?

投稿日時 - 2010-06-08 19:27:03

補足

返信ありがとうございます。

上記のように修正してみましたが、表示されないです。

投稿日時 - 2010-06-08 20:08:10

あわせてチェックしたい
  • \'xjis.nls\' ...
  • Common Files ...
  • Program Files ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら