phpでの画像出力方法について

このQ&Aのポイント
  • フォームでアップロードした画像(jpg)を、base64でエンコードしてDBに格納しています。
  • そのデータをDBから取り出して、PHPで出力したいのですが、上手く行きません。
  • php初心者ですが、よろしくお願い致します。
回答を見る
  • ベストアンサー

phpでの画像出力

フォームでアップロードした画像(jpg)を、base64でエンコードしてテキストとしてDBに格納しています。 そのデータをDBから取り出して、PHPで出力したいのですが、上手く行きません。 下記のような手順で試しましたが、ダメでした。 ※php5とMySQLです。 $img = base64_decode("※DBから取り出したテキスト"); header("Content-type: image/jpeg"); echo $img; 尚、下記のような形では画像表示出来ましたが、出来ればphpからの出力をしたいと考えています。 <img src="data:image/jpeg;base64,※DBから取り出したテキスト" /> php初心者ですが、よろしくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

No.1です。 ちょっと勘違いしていました。 表示できないのは、書かれているソースは3行だけで動かした時ですか? 違うなら、その3行のソースの前に書いてある内容が原因の可能性が高いです。

go-ape
質問者

お礼

度々、ご回答ありがとうございます。 ご指摘いただいた通り、テキストを取得する際のソースに誤りがあり、余計な文字列加わっていました。 初めて試すのこ3行のソースのみに目が行っていて全く気づきませんでした。 非常に助かりました。 ありがとうございました。

その他の回答 (1)

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

改行が1つ足らないです。

go-ape
質問者

お礼

回答ありがとうございます。 改行が足りないとの事で、あちこち改行して試しましたがダメでした。 もし宜しければ、もう少し詳しく書いていただけると助かります。

関連するQ&A

  • 画像出力で困ってます!

    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
  • DBからPHP出力された画像の情報取得について

    Linux、PHP4.3.11、MySQLの環境でPHPスクリプトの作成を試行しています。 MySQLの BLOB型 に格納された画像バイナリを呼び出してそのまま出力するスクリプトを作成し、同スクリプトから出力された画像ファイルのサイズや種別情報を「getimagesize()」で取得しようとしているのですがうまく行きません。 画像出力の処理は、MySQLからバイナリのデータを読み出して HTTP HEADER をつけてそのまま出力する処理を行っています。 // 画像出力処理 <?php $image = /* DBからバイナリを取得する処理 */ header("Content-type: image/jpeg\n\n"); echo $image; exit(); ?> 上のスクリプトをWEBブラウザで呼び出すと画像を表示する事ができます。 また、<img src="画像出力スクリプトのURL">としてHTML中に記述しても画像を表示できます。 しかし、getimagesize() で画像情報を取得しようとしても False となり、画像の構成情報を取得できません。 // 画像情報取得処理 <?php $src = "http://画像出力スクリプトのURL"; var_dump(getimagesize($src)); exit(); ?> $src にローカルにある実ファイル画像を指定した場合( "./hoge.jpeg" )や 他のWEBサーバ上にある画像ファイルを指定した場合( "http://よそのサーバURL/hoge.jpeg" )等は画像情報をちゃんと取得できます。 画像出力用のスクリプトで行わなければならない処理が何か不足しているのでしょうか。 原因となりそうな物が分かる方がいらっしゃいましたらご教示お願いいたします。

    • ベストアンサー
    • PHP
  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで見た目だけを小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 //Base64デコード $old_img = base64_decode($db_img); //200x200のサムネイル画像を作成 $new_img = imagecreatetruecolor(200,200); //再サンプリング・縮小(600x600→200x200) $thumbnail = imagecopyresampled($new_img, $old_img, 0, 0, 0, 0, 200, 200, 600, 600); //画面出力 print $thumbnail; この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • phpでテキストを返す

    html側で <img src="./image.php" /> php側で header("content-type: image/jpeg"); imagejpeg($image); imagedestroy($image); とすると、画像が表示されますが、 これを画像ではなく、テキストで返すにはどのようにしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • phpでSQLSV2005の画像を表示する方法

    いつもお世話になっております。 php5.1でSQL Server 2005のIMAGE型内の画像を表示するにはどうすればよいでしょうか。 以下のソースでデータを読み込んで出力しようとしていますが、 ブラウザには × が表示されてしまいます。 **** phpここから ************************************************************* header("Content-Type: image/jpeg"); header("Content-Disposition: inline;"); header("Content-Transfer-Encoding: binary"); $con = mssql_connect("xxDBサーバxx", "xxIDxx", "xxパスワードxx"); if (!$con) { print("データベースへの接続に失敗しました"); exit; } if (!mssql_select_db("xxDB名xx")) { print("データベースへの接続に失敗しました"); exit; } $sql = "select img_data from foo "; //img_data は IMAGE型 $result = mssql_query($sql); if (!$result) { print("SQLの実行に失敗しました<BR>"); exit; } $row = mssql_fetch_row($result); echo $row[0]; **** ここまで ******************************************************************** DBのフィールド img_data には数百KBの画像データが入っているはずなのですが、 試しに strlen($row[0])の値を見てみると、4096でした。 4KBしかデータを得れていない様に見えます。 もしかすると、特殊な変換をしないとデータを得ることができないかとも思ったのですが、 同じテーブルを使用するVB6.0のプログラムでは以下の様な問合せで表示できている様子です。 SQL: SELECT img_data FROM foo もしかすると、PHPは特殊な処理をしないとデータを得ることができないのでしょうか・・・? お詳しい方がいらっしゃいましたら、何卒ご教授をお願い申し上げます。 何卒よろしくお願い致します。

    • 締切済み
    • PHP
  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 $old_img = base64_decode($db_img); $new_img = imagecreatetruecolor(200,200); //200x200のサムネイル画像を作成 $thumbnail = imagecopyresampled($new_img,$db_img,0,0,0,0,200,200,600,600); print $thumbnail; $old_imgの処理が間違っているのだろうと思うのですが、どのように処理すればいいのかわかりませんでした。 この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • PHPでの画像出力について

    すいません。初めてphpを勉強しているのですが下記の表記で画像が出るはずなんですが 上手く出力されません。(ブラウザfirefoxで確認していますが、画像が見つからないマーク?みたいなのが出ています) 当方XAMPPというのを使っておりまして、echo "<img src=\"K3\">";の部分を単純に文字出力 などに変えるとちゃんと文字が出ます。 出力させたい画像名はk3.jpgです。 画像の置き場所はhtdocsフォルダ内(123.php、test10.phpのファイルがある場所)でいいのですよね? どなたか分かる方いましたらよろしくお願いします。 ファイル名 123.php <FORM ACTION="test10.php" METHOD="POST"> <INPUT type="radio" NAME="ss" VALUE="se">レッド <INPUT type="radio" NAME="ss" VALUE="ch">ブルー <INPUT type="radio" NAME="ss" VALUE="pi" CHECKED>ピンク <INPUT type="submit" VALUE="並び替える"> </FORM> ファイル名 test10.php <?php $_POST['ss']; $a = $_POST['ss']; if( $a == pi ){ echo "<img src=\"K3\">"; } ?>

    • ベストアンサー
    • PHP
  • PHP 画像の表示

    プログラミング初心者です。 PHPでブラウザに画像を表示したいのですが映らなくて 以下のソースコードは間違っているでしょうか? <?php $fileName = "img/test.jpg"; //ファイル名 if (file_exists($fileName)) { header('Content-type: image/jpeg'); header('Content-Length: '.filesize("http://localhost:8080/test.jpg")); //あった方が良い readfile("http://localhost:8080/test.jpg"); //ファイルを読み込んで標準出力に書き出し exit; } ?>

    • ベストアンサー
    • PHP
  • 画像表示で不正な理由がわからない

    お世話になります。 PHP4とMySQLを使って 「DBのBLOB型項目に保存した画像データを呼び出して表示する」 ということがしたくてこちらも他もいろいろ調べた結果、 「画像表示PHP」のimgのsrc部で「画像呼出PHP」を指定すればよい というのはわかったのですが、うまくいきませんでした。 それで少しずつ決め打ちを増やしたり削ったりして簡素化し不正な点を見つけようとしたのですが直らず、最終的に下のようにDBからの読み出しすらやめて、「同一階層にイメージを置いて表示するだけ」としてもエラーが直らないのでわけがわからなくなってしまいました。 そもそもやってること自体が少ないので根本的な勘違いなのかもしれませんが、どなたか気づいた方教えて頂けないでしょうか? どうかよろしくお願い致します。 ----------------------------------------------- ■画像表示「test.php」 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>TEST</title> </head> <body> <? echo "<img src=\"image.php\">"; ?> </body> </html> ----------------------------------------------- ■画像呼出「image.php」 <? header("Content-Type; image/jpeg"); echo "aaa.jpg"; ?> ----------------------------------------------- ・「test.php」「image.php」「aaa.jpg」はすべて同一ディレクトリ ・test.phpのPHP部を「<img src="aaa.jpg">」とすると正常に表示 ・エラー状態とは画面に「×」画像が表示される状態

    • ベストアンサー
    • PHP
  • PHPとjavascriptで共通なエンコード方法

    PHPからjavascriptにバイナリデータ(16バイト程度)を受け渡す 処理を作成しているのですが、うまく動作しないので、相談します。 バイナリデータをエンコードしてPHPからjavascriptに 以下の流れで引き渡しています。 (1)PHPのbase64_encodeでバイナリデータをエンコード (2)エンコードしたデータをjavascriptに出力 (3)javascriptでデータをデコード (3)のデコードには次のページのbase64.jsなど、いくつかの デコード方法を試してみました。 http://www.onicos.com/staff/iz/amuse/javascript/expert/ しかしながら(1)の元のデータと(3)でデコードしたデータが 一致しません。 質問したいのは以下の2点です。 ・PHPのbase64_encodeとjavascriptのbase64エンコードは  一般的に方式が違うのでしょうか。同じbase64なので  同じコードが生成されると考えたのですが、そうでは  ないのでしょうか。 ・base64_encodeでも、その他の方法でもかまわないので  PHPとjavascriptで共通なエンコード方式、あるいは  PHP上のバイナリデータをjavascriptに正しく受け渡す  方法があれば教えて下さい。 よろしくお願いします。

専門家に質問してみよう