- ベストアンサー
CSVデータから画像出力で困っています!
- CSVデータから抜き出した値を画像ファイル名として利用し、画像を出力する方法について困っています。
- そのため、CSVデータの値を連結して画像ファイル名を作成し、それを利用して画像を出力しています。
- しかし、画像が出力されず、CSVから取得した値を表示すると画像ファイル名と同じ形で表示されるため、なぜ画像が表示されないのか疑問です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1つの画像をブラウザに見せる場合は 1. 直接画像ファイルを出力する 2. HTMLから画像ファイルを呼び出す の二通りが考えられます。 質問者さんは、この二通りを同時にやろうとしているから話がこんがらがっているのです。 ブラウザから直接アクセス出来る画像の場合は、2を選択します。 /* if (img != "") { header("Content-type: image/jpeg"); readfile("img/$img"); break; } */ ここはそっくり削除し、 <img src="{$myself}?act=put">を <img src="{$img}"> に変更すれば見ることが出来ます。 ブラウザはPHPが出力するHTMLを介してイメージを呼び出す形になります。 ブラウザから直接アクセス出来ないような場所にファイルがある場合、1を選択する訳ですが、この場合は2つのファイルが必要になります。即ち、URLを作成するファイル(HTMLを出力するファイル、下の例では aaa.php)と、画像を出力するファイル(下の例では img.php )です。 ---- aaa.php ----- $csvData[0][0] = $a; $csvData[0][1] = $b; $csvData[0][2] = $c; .................. .................. //.出力したいイメージをIDとします...... <img src="img.php?act=put&id={$id}"> ------------------- ---- img.php ----- <?php header("Content-type: image/jpeg"); if($_GET[id] != ""){ // $_GET[id] から $img へ変換するスクリプト $img = "010203.jpg"; readfile("img/$img"); }else{ readfile("img/error.jpg");//エラー用の画像を用意しておいた方が良いかもしれません } ?> ------------------- こんな感じでしょうか。 過去ログを検索すればたくさんの人が勘違いしているようです。ブラウザはどういうしくみで画像を表示しているのか、を理解すれば勘違いは無くなります。
お礼
お礼、遅れました。 いやー、勉強になりました。 なんか自分でも変だとは思ってたのですが。 やっぱこのレベルまで来るとプログラムも微妙な世界になってくるのですね。