• ベストアンサー

データベースからの画像の読み出し

お世話になります。 アップロードされた画像のバイナリデータをデータベースに格納して、PHPからデータを読み出して表示させているのですが、IE, Firefox, safari, operaなどのブラウザでは正常に表示できるのに、携帯端末のブラウザからは画像が表示されません。 $header = "Content-Type:image/jpeg"; header($header); echo $image; のようなコードですが、なぜ携帯端末で表示できないのか分からず困っております。 宜しくお願い致します。

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

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

  • ベストアンサー
  • elbend
  • ベストアンサー率50% (7/14)
回答No.3

経験上の判断で確かな情報ではありませんが、 携帯では、ファイルの拡張子で画像を判断している場合が 多いようです。(.jpg .gif .png などで判断。ファイルヘッダなどは見ていない模様) そのため、直接データを吐き出しても表示されないみたいです。 私は面倒でしたが、表示のために実ファイルを出力し、それを 表示するようにしていました。 (後にやはりまどろっこしいので、実ファイルを保存する方法に変えましたが。)

seventhang
質問者

お礼

ご回答ありがとうございます。 ファイルを書き出してから表示させるなら、確かに最初からファイルとして保存しておいた方が簡潔ですね。 大変参考になりました。 ありがとうございます。

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

画像が重すぎて表示できない等ではありませんか? エラーメッセージなどは表示されませんか? シミュレーターなどでも表示されませんか?

seventhang
質問者

補足

ご回答ありがとうございます。 画像のファイルサイズは小さいものでも表示することができません。 Softbank 913SHでアクセスした場合、「エラーが発生しました。リクエストが不正です」というエラーメッセージが表示されています。 i-mode HTML Simulator IIでは画像を表示することができました。 以上、よろしくお願い致します。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>携帯端末 ここでいう携帯端末とは具体的にどのキャリアのどの機種のことでしょう? 携帯ブラウザは必ずしもPCと同じ仕組みで動いているわけではありません

seventhang
質問者

補足

ご回答ありがとうございます。 現時点でテストをしたのは、Softbank 913SH、au CA39、DoCoMoの端末でも数機種で確認しましたが、画像が表示できた端末は1つもありませんでした。 よろしくお願いいたします。

関連するQ&A

  • 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
  • [au携帯] DBに格納されたバイナリ形式の画像を表示する方法

    [au携帯] DBに格納されたバイナリ形式の画像を表示する方法 データベース(PostgreSQL)に格納されたバイナリデータの画像をPHPを使用して元に戻し表示しようとしています。 携帯用ホームページを作成しているのですが、ドコモだとちゃんと表示されるのにAUでアクセスすると画像がバッテンになってしまって表示できません。 下記のようにPHPを使って画像を表示しているのですが何処が間違っているのでしょうか。 画像の表示用 img.php <?php //DBから必要なデータを取得します。 // $imag_data ------- バイナリ形式の画像データ // $image_file_type - 画像保存時に下のようにして取得した値 // list($width,$height,$image_file_type)=getimagesize($imgurl); // $img_name -------- 画像の名前 $imag_data = pg_unescape_bytea($imag_data); header("Content-type: " .$image_file_type); header('Content-Disposition: inline; filename="' .$img_name.'"'); print($imag_data); exit(); ?> img.phpに直接アクセスするのと、<img src='http://…img.php' />で表示してみたのですが、ドコモだと2通りともできるのに、AUだと「リクエストされたページは表示できません。」と出てしまい、困っています。 どなたか、ご教授くださいますようよろしくお願いいたします。

    • 締切済み
    • PHP
  • データーベースのすべての画像を取り出したい

    データーベースのテーブル内の画像をすべて取り出すプログラムを書いています。 データベース(Mysql)には画像が4列(4個)存在しますがプログラムの書き方が悪いと思うのですが、1つしか画像を取り出すことができません。 すべて取り出すにはどこを直せばよいでしょうか? 書いたソースは以下になります。 たぶん$img_db=$row["img_data"]; echo $img_db;が原因のような気がしますが分かりません。 詳しい方教えてください。 <display.php>(データーベースから読み込みようphp) <?php $conn=mysql_connect("localhost","root",""); mysql_select_db("practice"); $result = mysql_query("select img_data from sample "); while($row= mysql_fetch_array($result)){ $img_db=$row["img_data"]; echo $img_db; } ?> <output.php>(ブラウザ表示用php) <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”> <title>画像表示</title> </head> <body> <p>MySQLのBLOBにバイナリで格納した画像を表示してみます。</p> <?php echo "<img src=\"display.php?$img_db\">" ?> </body> </html>

    • ベストアンサー
    • 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へ入力 ここまで行うものを作りたいと考えている のですが、最初の段階画像がうまく表示されません。 <? header ( 'Content-type: image/jpeg' ); $a = file_get_contents(http:/sss/aaaaa/bbl0909251904009-n1.jpg); echo $a; ?> file_get_contentsのみで最初は書いていたのですが 表示してみると文字化けの状態になってしまいまして header ( 'Content-type: image/jpeg' ); をphpの頭に書き込んだところ 表示画面 http://aaaaa/bbbbbb/cccccc/dddddd09-n1.php とういう感じで自分のアドレスが表示されたのですが なぜでしょうか? 画像を表示させるにはどうしたらよいでしょうか? そして画像を保存する方法を教えて頂きたいのですが どうぞ宜しくお願いします。

    • 締切済み
    • PHP
  • header('Content-type: ima

    header('Content-type: image/jpeg'); echo $img->createResizedImage(100, 100); で画像として出力しているのですが、 単独の画像ではなく(?) HTMLの中の画像として出力するにはどうすれば良いですか? 具体的には、ブラウザへ出力する際、HTMLのソースと同じように<html><body>画像</body></html>で出力したいです

    • ベストアンサー
    • PHP
  • php,mysqlにて画像パス保存/表示につい

    mysqlに画像パスを格納しておき、phpでブラウザに表示するという部分について質問があります。 以前画像を扱った際は、DBにそのまま画像データを格納していたのですが、一般的ではないということで画像パス使う方針にしました。 画像パスはthumbnailというカラムにvarcharで画像パスを格納しました。 今回ご相談させていただいた件では、主に画像の表示の部分にアドバイスをいただければと考えています。 以前画像をそのまま保存し表示するときは、get_image.phpのようなファイルを噛ませ、それをブラウザに読み込ませることで表示していたのですが、画像パスでも同じようなやり方でいいのでしょうか? ネットで調べてみたのですが、何となくしっくりこないというか、私の誤解もあるかもしれないのですがすっきりせず迷走中です。 どうか、アドバイスをご教示いただけないでしょうか。 ※以下は、試しにget_image.php噛ませてみた際のコードです。 <?php $id = $_GET['id']; //DB接続 ~省略~ $sql = "SELECT image FROM テーブル名 WHERE id='$id'"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました<BR>"); echo(mysql_errno().": ".mysql_error()); exit; } $row = mysql_fetch_array($result); mysql_close($con); $img_path = '$row['image']' $img = file_get_contents($img_path); header('Content-type: image/jpg'); echo $img; ?>

    • ベストアンサー
    • PHP
  • Apache,phpで画像が表示されない

    こんにちは Apache2.2、php5を使用しています。 ブラウザに画像を表示させたいのですが、URLで直接画像ファイルを指定するとファイルの場所を見せてしまうので、非公開のディレクトリの画像を表示させるようにphpのプログラムを呼び出して(引数をファイル名)にしています。 画像が「X」の状態で表示されません。(涙 header('Content-Type: ' . 'image/jpeg'); header('Content-transfer-encoding: binary'); header('Content-length: ' . filesize(/.../../$fileName)); header('Content-Disposition: attachment; filename="' . $fileName . '"'); のあとで、fopen() ->> fpassthru();で処理したのですが、小さい画像ファイルは処理は終わっていますが、「X」の状態で表示されて、大きい画像ファイルを指定するとfpassthru()の中で死んでしまいます。 fread ->> print ->> flush()ループで処理すると、flushの中で死んでしまいます。 error.logにも特に情報が残っていないので... 何かご存知の方はいらっしゃいませんか? よろしくお願いします。

    • ベストアンサー
    • 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
  • PHPで画像をデータベースから表示したいです

    画像とテキストを同じファイルで表示したいのですが文字化けしてしまいます。 <?PHP header('Content-type: image/gif'); readfile('アドレス/232-73.gif'); ?> 画像だけの場合は表示はできるのですがテキストと一緒に表示しようとしましたが上手くできません。 どうしたらいいでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう