
php(4.3)とmysql(4.0)を使って、BLOBに格納した画像を表示させたいです。
テーブル:gazou 画像名:aa.gif
| id | images |
| ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
| 1 | [BLOB-2.9KB] |
↑ PHPMYADMINでデーターを作って、画面にはこのように表示されています。
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-JP”>
</head>
<body>
<?php
$conn = mysql_connect("localhost","user","pass");
mysql_select_db(test);
$self = basename($_SERVER['PHP_SELF']);
$sql = " SELECT * FROM gazou ";
$rst = mysql_query($sql,$conn);
while($row=mysql_fetch_array($rst)){
print"<img src='{$self}?id=$row[id]'>";
}
?>
</body>
</html>
本やネットで自分なりに調べた結果、これで画像が表示されるはず(!?)だと思っているのですが、残念ながら、画像は×になって表示されません。
初歩的な質問ですみませんが、どうすれば画像は表示されるのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
HTMLのIMGタグのSRC属性は普通画像へのURLを入れますよね?
ですので、直接データを入れるのではなく画像を吐き出すスクリプトのURLを入れるようにしてください。
例えば画像を吐き出すスクリプトがimage.phpだとすると以下のようになります。
<img src="imgae.php?id=1">
その上で画像を吐き出すスクリプト(上記の例で言うimage.php)を作成します。画像を吐き出すスクリプトの注意点はHTTPヘッダのMIMEタイプを指定する必要があるということです。
例えばjpeg画像を表示するには以下のようになります。
header("Content-type: image/jpeg");
print 画像データ
たぶん将来的には性能を出すにはキャッシュコントロールなどが必要になりますので、参考URLのサイトでHTTPヘッダを勉強してください。
参考URL:http://www.studyinghttp.net/
この回答への補足
すいません。以下の文の
>>2. phpmyadminを使用して画像を格納。以下のようにSQLが照会されました。
>>『 INSERT INTO `gazou` ( `id` , `image` ) VALUES ('3','長い文字列'); 』
は
2. phpmyadminを使用して画像を格納。以下のようにSQLが照会されました。
『 INSERT INTO `gazou` ( `id` , `image` ) VALUES ('1','長い文字列'); 』
の間違いです。
回答ありがとうございます。ご指摘の通り、以下のスクリプトを作って実験してみました。
------------------------------------------------------------------
画像を吐き出すスクリプト [ image.php ]
<?php
$conn = mysql_connect("localhost","user","pass");
mysql_select_db(test);
$sql = " SELECT * FROM gazou WHERE id='1' ";
$rst = mysql_query($sql,$con);
$row=mysql_fetch_array($rst);
header("Content-type: image/jpeg");
print $row[id];
?>
-------------------------------------------------------------
画像表示ページ
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-JP”>
</head>
<body>
<?php
print"<img src='image.php?id=1'>";
?>
</body>
</html>
---------------------------------------------------------------
結果として、画像は×になっており表示されませんでした。この書き方に問題はありますでしょうか?
また、image.phpはどうなっているのだろうと思い、画面を表示させてみたら、 『画像ファイル "http://localhost/image.php" は壊れているため、表示できませんでした。』 という文章が表示されました。
BLOB格納時に私が画像ファイルを壊してしまったのでしょうか。壊した覚えはないのですが、画像格納時の流れを明記しておきます。
1. jpeg画像をパソコンに用意。(この時点で画像はちゃんとみれます)
2. phpmyadminを使用して画像を格納。以下のようにSQLが照会されました。
『 INSERT INTO `gazou` ( `id` , `image` ) VALUES ('3','長い文字列'); 』
3 phpmyadminで確認したら以下のように表示されました。
| id | images |
| ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
| 1 | [BLOB-2.9KB] |
どこに原因があるのかさっぱりわかりません・・・。
どうかよろしくお願いします。
No.4
- 回答日時:
>>>header("Content-type: image/jpeg");
>>>をコメントアウトしてテキストとしてブラウザに表示してみてください。
>
>image.phpに文字化けした文字がずらっと並ぶと同時に、firefoxのファイルサイズも反映されなくなりました。
文字化けした文字が出ていれば正解です。
文字化けするのは画像ファイル(バイナリ)を無理やりテキストで表示しようとしているためです。
この文字化けした文字列の最初の部分に読み取れるエラーメッセージ等がでていないでしょうか。
もし出ていれば画像ファイルが壊れてしまうので正常に表示できません。
出ていなければコメントアウトした部分を戻すと画像が表示されるはずですが…。
>>この文字化けした文字列の最初の部分に読み取れるエラーメッセージ等がでていないでしょうか。
でていないんですよね・・・。私もいろいろ調べたんですが、やはりこれで正解のような気がしてなりません。
matchasoftさん、何度も回答してくださってありがとうございました。
ここで質問を締め切らせていただきます。
No.3
- 回答日時:
もう一息ですね。
image.phpのどこかでエラーや警告が出ていないでしょうか。ヘッダとして"Content-type: image/jpeg"を出力するとエラーや警告が発生しても画面に表示されなくなり、代わりに画像が壊れてしまいます。
ですので、エラーや警告をログファイルに吐き出すようにするか、もしくは
header("Content-type: image/jpeg");
をコメントアウトしてテキストとしてブラウザに表示してみてください。
ブラウザに文字化けした文字のみ(画像ファイルを無理やりテキストエディタで開いたような文字)が出ていれば正解です。
matchasoftさん、回答ありがとうございます。返信が遅れてしまい大変失礼いたしました。
>>header("Content-type: image/jpeg");
>>をコメントアウトしてテキストとしてブラウザに表示してみてください。
image.phpに文字化けした文字がずらっと並ぶと同時に、firefoxのファイルサイズも反映されなくなりました。
文字コードを変えたり、環境を変えたりして試してみたのですが、いずれも表示されませんでした。 ううう・・・。
No.2
- 回答日時:
print $row[id]; でエラーになりませんか?
テストのためにIDを固定にしているのなら
print $row[1];
になると思います。
再び回答ありがとうございます。
念のためテーブルから作り直して違う画像を入れ print $row[1]; に変えて試してみたところ、結果としては画像が×の表示だったのですが、image.phpの方は『 http://localhost/image.php 』と表示されました。
(ちなみに実験ブラウザはFirefoxです。IEではimage.phpも×の表示になっています。)
以下の画像に入れ替えました。
--------------------------------------------------------
画像サイズ:15.6KB 幅:200ピクセル 縦:385ピクセル
-------------------------------------------------------
画像のプロパティを見てみると以下のようになっていました。
--------------------------------------------------------------
[ブラウザ:IE]
プロトコロル: HyperText 転送プロトコル (HTTP)
種類: 使用不可
アドレス: http://localhost/image.php?id=1
サイズ: 使用不可
大きさ: 28 × 30 ピクセル
---------------------------------------------------------------
--------------------------------------------------------------
[ブラウザ:Firefox]
url: http://localhost/image.php?id=1
幅: 24ピクセル
高さ: 24ピクセル
ファイルサイズ: 15.57KB
代替テキスト: (代替テキストが指定されていません。)
---------------------------------------------------------------
Firefoxでファイルサイズが反映されているところを見ると、データー自体は送られているようなのですが・・・なんだか意味不明です。
ややこしくてすみません、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP php ログイン 1 2022/11/01 00:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
libpng 24bpp rawをPNGに変換す...
-
PHPで画像アップロード時にサイ...
-
PythonのTkinter詳しい方へ。画...
-
pictureboxに表示した画像のフ...
-
VBSの「MsgBox」について
-
PHPで吐き出した画像にリンクを...
-
拡張子php画像をjpg画像等に変...
-
PHPによる画像の生成による色の...
-
エクセルでカレンダーマクロの...
-
<ASP.NET+C#+MSDE> JPEG画像の...
-
Illustratorで文字と画像を流し...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
ファイルの遷移がうまく行われ...
-
PHPで`headers already sent`と...
-
SELECTの値を保持する
-
VB2008でFTPでのディ...
-
sqlで日付が一番古いデータの月...
-
.phpと.incファイルの違いはな...
-
.htaccessファイルの修正がこれ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
iphoneで虫眼鏡の作り方
-
Illustratorで文字と画像を流し...
-
pictureboxに表示した画像のフ...
-
透過PNGが透過されない!!
-
GDI+を使ったビット数とDPIの扱い
-
VBAでJPGサイズ変更
-
PHPで吐き出した画像にリンクを...
-
ListViewコントロールでサムネ...
-
拡張子php画像をjpg画像等に変...
-
ビットマップ画像を読み込むプ...
-
C#とJavaで、MP3タグの画像を表...
-
SQLiteに画像を格納したい
-
手作業で埋め込んだ、UserForm1...
-
【PHP】サーバー上で TIFFをJPE...
-
BLOBデーターの画像の表示方法...
-
jar化すると画像が消える
-
「imagejpeg」(GD)で作成した...
-
PythonのTkinter詳しい方へ。画...
-
php,mysqlにて画像パス保存/表...
おすすめ情報