• ベストアンサー

画像ファイルの出力方法

readfile($_FILES['userfile']['tmp_name']); で出力すると解読不可能な文字列が表示されます。 おそらく画像データを吐き出しているだけだと思います。 やりたい事はその画像をimg src=""で表示させたいだけです。 その方法がわかりません。 画像データから画像への変換というかやり方を教えてください。

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

  • ベストアンサー
回答No.2

PHPの側で以下のように宣言して header("Content-type: image/jpeg"); 表示する側でHTMLを以下のように記述してみてはいかがでしょう。 <img src="xxx.php"> なおimage/jpegのjpegの部分は画像ファイルの種類にあわせてください。またxxx.phpのxxxはPHPのファイル名です。

wf3255
質問者

お礼

返信が遅れてしまい申し訳ございません。 header("Content-type: image/jpeg");の宣言方法でうまくいきました。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

基本的に #2さんの方法でOKです。 > おそらく画像データを吐き出しているだけだと思います。 通常の画像だって基本的にはそうですよ。 ブラウザにどんなファイルかを認識させる為に、WEBサーバはヘッダーをつけます。このヘッダーによってブラウザが画像であるか、HTMLであるか、XML文書であるか、はたまたExcelやWordの文書であるかを判断し、それなりの表示やアプリケーションの起動をしています。 header("Content-type: ".$filetype); $filetypeにはimege/jpeg、image/gif、image/png等が入ります。アップロードされたファイルのようですが、この場合は$_FILES['userfile']['type']にファイルタイプが入っているのでそれをそのまま入れると言う方法もあります(空の場合も有るので対策をとった方が良い)。 補足ですが、通常はこの方法で画像として認識されますが、ヘッダーをつけてもレンタルサーバ等で自動的にバナーが表示されるような環境では駄目な場合があります。このような環境ではphpならばtext/htmlとして出力されてしまいます。apacheのmod_layoutという機能を使っていますので、.htaccess等でスクリプトを指定して無効にする必要があります。

wf3255
質問者

お礼

返信が遅れてしまい申し訳ございません。 詳しいご説明有難うございました。 うまくいきました。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#39970
noname#39970
回答No.1
wf3255
質問者

補足

すみません。 わかりません。 ヘッダーはわかるのですが、エンコードのようには変えられないのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • $_FIILESで受け取った画像を、すぐに表示するには?

    お忙しい中お読み頂きありがとうございます。 下記の様に、$_FILESで受け取った画像データを、 すぐに<IMG>タグで表示できないのでしょうか? 同じページで反映したいのですが、上手くいきません。 どんなアドバイスでも構いませんので、ご教授お願い致します。 $name = $_FILES['userfile']['name']; $tmp_name = $_FILES['userfile']['tmp_name']; list($width, $height) = @getimagesize($tmp_name); <IMG src="$name" width="$width" heigth="$height">

    • ベストアンサー
    • PHP
  • 画像出力で困ってます!

    CSVデータから、 01,02,03という部分を抜き出して、 010203.jpgという変数にしたいのですが、 $csvData[0][0] = $a; $csvData[0][1] = $b; $csvData[0][2] = $c; として、 $img = "$a" . "$b" . "$c" . ".jpg";//CSVから取った値 //$img = "010203.jpg"; //***2 if (img != "") { header("Content-type: image/jpeg"); readfile("img/$img"); break; } echo <<<EOM <img src="{$myself}?act=put"> EOM; としても、 画像が出力されません。 ちなみに、//***2の先頭の//を取ってやると、 画像が出力されます。 //CSVから取った値 の部分をechoすると、 直接変数にした//***2の値と全く同じ形で表示されます。 なぜ、CSVから拾った値では画像表示されないのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ファイルのアップロード$_FILESデータの取得方法

    php.iniのregister_globals=offに設定したときのファイルのアップロード で$_FILESのデータがうまく取得できません。 []_FILES .[]userfile = Array ..[]size = Array ..[]name = Array ..[]tmp_name = Array ..[]type = Array 取得したいデータはsize.name.tmp_name.typeです。 よろしくお願いいたします

    • ベストアンサー
    • PHP
  • HTML5 File APIを利用したサムネイル

    画像アップロード前に画像サムネイルのHTML5 File APIします。参考サイトでは理解できましたが、以下のソースにおいて、class=img**で指定した場所にサムネイル表示するにはどうしたらよいのでしょうか? <img src="ここに画像1" class="img_01">あるいは<span class="img01">ここに画像1</span> <form enctype="multipart/form-data" method="post"> <p><img src="ここに画像1" class="img_01"><input type="file" name="userfile_01"></p> <p><img src="ここに画像2" class="img_02"><input type="file" name="userfile_02"></p> <p><img src="ここに画像3" class="img_03"><input type="file" name="userfile_03"></p> </form> 以下のfunction内の書き方がわかりません。 $(function() { $('input[type=file]').after('<span></span>'); // アップロードするファイルを選択 $('input[type=file]').change(function() { var file = $(this).prop('files')[0]; // 画像以外は処理を停止 if (! file.type.match('image.*')) { $('span').html(''); return; } // 画像表示 var reader = new FileReader(); reader.onload = function() { var img_src = $('<img>').attr('src', reader.result); $('span').html(img_src); } reader.readAsDataURL(file); }); }); 参考URL http://php.o0o0.jp/article/jquery-preview_thumbnail

  • アップロードファイル名の文字化け

    いつもお世話になっております。 アップロードしたファイルから $_FILES['userfile']['name'];で、アップしたファイル名を取得しようとするときにファイル名に 特定(後半1バイトが'5C')の漢字を含むとPHPが、'\'と誤認して該当の文字から前を消して表示してきます。 例えば、「内部構造.txt」は、「造.txt」に化けます。move_uploaded_file関数で、アップしたファイルをどこかに保存しようにも、ファイル名が正しく指定できません。 どなたか、対策方法をご教授頂けませんでしょうか? よろしくお願いいたします。 <? mb_internal_encoding("EUC"); echo "userfile_name is ".$_FILES['userfile']['name']; echo "<br>"; echo "userfile_type is ".$_FILES['userfile']['type']; echo "<br>"; echo "MAX_FILE_SIZE is ".$_POST["MAX_FILE_SIZE"]; echo "<br>"; echo "userfile_tmp_name is ".$_FILES['userfile']['tmp_name']; echo "<br>"; echo "userfile_error is ".$_FILES['userfile']['error']; echo "<br>"; echo "userfile_size is ".$_FILES['userfile']['size']; echo "<br>"; $dir="c:/work/"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $dir.$_FILES['userfile']['name'])) { print "File is valid, and was successfully uploaded. "; } else print("UPLOAD ERROR!!"); ?>

    • ベストアンサー
    • PHP
  • PHPで画像をアップロード&保存したいのですが..

    初心者です. ブラウザから画像をアップロードし保存できるようにしたく, サンプルを基に以下のようなソースを書いてみたのですが, 画像の保存ができません. もし直さなければいけないところがわかる人がいらっしゃいましたら ぜひ教えてください. よろしくお願いいたします. <?php $img_name = $_FILES["img_path"]["name"]; $img_size = $_FILES["img_path"]["size"]; $img_type = $_FILES["img_path"]["type"]; $img_tmp = $_FILES["img_path"]["tmp_name"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 30000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>"; }else{ $size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。"; } } $FilePath = "./img/".src.".".GetExt($img_name); move_uploaded_file($img_temp,$FilePath); //GetExt function GetExt($FilePath){ $f = strrev($FilePath); $ext = substr($f, 0, strpos($f,".")); return strrev($ext); } ?>

    • 締切済み
    • PHP
  • DBに格納されたバイナリデータを画像表示する方法

    PHP初心者ですみません。PHP、PSQLでDBにアップロードされた画像データ(バイナリデータ)をWEB上で例<img src=image.php>画像表示したいのですが、画像が×表示になってしまいます。格納時にデータが間違っているのか?それとも表示方法が間違っているのかわかりません。どなたか助けてください。 【アップファイル格納時スクリプト】 //fopenして変数に保存 $fp = fopen($_FILES["upfile"]["tmp_name"],"r"); $imagedata = fread($fp,filesize($_FILES["upfile"]["tmp_name"])); fclose($fp); //バイナリデータをエスケープ $imagedata = pg_escape_bytea($imagedata); $filename = $_FILES["upfile"]["name"]; $sql_g = "update img set img_data='$imagedata'"; $conn_g = connect(); $result_g = pg_query($conn_g,$sql_g); pg_close($conn_g); } 【画像表示用ファイルスクリプトimage.php】 $sql_i = "select img_data from img"; $conn_i = connect(); $res_i = pg_query($conn_i,$sql_i); $num_i = pg_num_rows($res_i); $img_data = pg_fetch_result($res_i,0,"img_data"); header('Content-type: image/gif'); header('Content-Disposition: inline; filename=' . $img_data); print"${img_data}"; 【画像表示部分スクリプト】 <img src="http://●●●●/●●/image.php" alt="イメージ" width="500" height="100"> こんな感じなのですが、どこがどう違うのか何度も試してやっとここまできたのですが、答えがでません。お解りの方いらっしゃいましたらご指摘をどうかよろしくお願いいたします。

  • phpでmysqlから画像パスを出力する

    phpを勉強始めたばかりで、データベースを使う必要がでてきたため、初心者サイトを 読んでいるのですが、一点質問があります。 行いたい事は、データベースに保存した画像パスをphpで出力するだけなのですが、パスが 文字列として扱われてしまっています。画像を出力するにはどうすれば良いでしょうか? 例えば以下のようなphpプログラムで、nameには画像パスである 「abc.jpg」という文字が 入っていたとすると以下ではそのままabc.jpgという文字列が出力されてしまします・・・。 <?php $pdo = new PDO("mysql:dbname=aaa", "root"); $pdo->query("set names utf8;"); $st = $pdo->query("SELECT * FROM bbb"); while ($row = $st->fetch()) { $name = htmlspecialchars($row['name']); echo '<img src="$name">'; } ?>

  • アップロードした画像を表示するには

    アップロードした画像を表示したいと考えてます。アップロードは非同期 なので、アップロードを実行するchild.phpで画像表示の処理もして、アッ プロードの命令を出すparent.phpに画像の表示を行います。 ---- child.php(一部) ---- move_uploaded_file($_FILES["upload_file"]["tmp_name"], $image_name); echo '<img src="' . $image_name . '" width="100" height="100">'; これで成功します。ただ画像を常に同じ場所に表示したくechoの部分を以下 のように書き換えると失敗します。 echo '<script>'; echo 'document.getElementById("pict").src="' . $image_name . '.jpg";'; echo '</script>'; ---- parent.php(一部) ---- <img src="" id="pict"> クロームのDevToolsで調べるとElementsでは以下のようにsrcに何もなく失敗してます。 <img src id="pict"> ところがSourcesでは「Cannot set property 'src' of null」とエラーが出ているのに 以下のようにsrcには画像名は入ってます。 <script>document.getElementById("pict").src="./image1/bfbiD.jpg";</script> なお同名の画像はきちんとアップロードしてます。対策があれば教えてもら えないでしょうか。

    • ベストアンサー
    • CSS
  • 画像アップ

    php初心者です 簡単な画像アップロードを付けたいと思っています それでアップだけはなんとかできたのですが、もう少し機能を付けたいです 付けたい機能は 1.拡張子を調べて限定したい。gif、jpg、pngの三つを許可したい 2.画像の横と縦の幅が指定した幅より大きければ、指定した幅まで縦横比維持で縮小 100*100 3.もう一つのディレクトリに、小さいサムネイルを作りたい。大きさは32*32です 4.拡張子はそのままにして画像の名前をリネームしたいです よろしくお願いします(_ _ <?php $img_name = $_FILES["upfile"]["name"]; $img_size = $_FILES["upfile"]["size"]; $img_type = $_FILES["upfile"]["type"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 50000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type"; if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0604); print $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { print "ファイルをアップロードできません。"; } } else { print "ファイルが選択されていません。"; } }else{ $size_error = "サイズが大きすぎます"; } } ?> <html> <head> <title>画像アップロード</title> </head> <body> <form name="form" action="" method="POST" ENCTYPE="MULTIPART/FORM-DATA"> <input name="upfile" type="file" size="40"> <input name="up" type="submit" value="アップロード"><hr> </form> <?php print($size_error); ?><?php print($img_message); ?> </body> </html>

    • ベストアンサー
    • PHP