• 締切済み

DWRでのバイナリデータ(画像)の表示

DBでBlob型として扱っている画像データをDWRを用いて非同期にクライアント側で表示させたいと思っております。 しかし、方法がわからず、そもそもできるのかどうかもわかりません。 下記のリンク先サイトではoverrideMimeTypeを用いてFirefoxに限り画像データのjavascriptでの取り扱いに成功しています。 http://zombiebook.seesaa.net/article/34873787.html できればDWRを用いてクロスブラウザの問題を解決しながら(せめてIEでも)Blob型のデータを表示させたいと思っています。 ご説明不足の点、根本的な勘違いなどあるかも知れませんが、よろしくご回答お願いいたします。 【環境】 DWR 2.0.5 JDK 1.5.0

みんなの回答

回答No.2

IEのActiveXObjectではバイナリデータを扱えますが、XMLHttpRequestは、バイナリデータをサポートしていません。 IE以外のブラウザはすべてXMLHttpRequestで通信します。 もちろん、JavaScriptの言語仕様としてバイナリデータを扱えますので、 サーバーでBASE64エンコードしたデータをJavaScriptでバイナリデータにデコードすることでバイナリデータを受信する事は可能ですが、 それを表示する手段がありません。 やってやれなくはないですが、画像データを画像として表示するのは現実的ではないです。 IE7以降、ActiveXモードとXMLHttpRequestモードを切り替えられますので、(添付画像参照) ユーザーがXMLHttpRequestモードにしていると、バイナリデータが破壊される可能性があります。 画像を表示するだけなら、わざわざAjaxを使う必要はないと思います。 <script> onload=function(){ var img=new Image(); img.src='http://example.com/image.jsp?id=5'; document.getElementById('output').appendChild(img); } </script> <div id="output"></div>

jima-piku
質問者

お礼

丁寧なご説明ありがとうございます。勉強になります。 伝えそびれておりましたが、今回の開発の主目的は、DWRを使う練習でした。 素人なもので、「DWRを使えばクロスブラウザの問題も解決して、透過的にサーバー側のリモートオブジェクトを利用できる。じゃあ画像データはDataBaseの中にBlob型で持たせておいて、適当なbeanでひっぱってくればいけるかな?」と短絡的に考えておりました。 表示の部分にまで考えが及んでいなかったようです。 もう少しDWRについても、それ以外についても勉強が必要だと思います。 とりあえずは、なんとか別なカタチでDWRを使おうと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

一般的な画像形式への変換はサーバーサイドで行うことにして、 ブラウザ側のJavaScriptではその画像を得られるURLをsrcにしたimg要素を生成するようにするのではだめなの?

jima-piku
質問者

お礼

素早い回答ありがとうございます。 確かに画像形式への変換はサーバーサイドで行うのがよいようですね。 今回の目的はDWRの使用(練習)ですので(目的と手段を履き違えているようですが)、どのようにDWRを使用したらよいか考えたいと思います。 また何か助言いただけると幸いです。 (実は今回わざわざ画像ファイルを一度Blob型に変換してDataBaseにいれてましたorz。最初から画像ファイルのURLだけデータベースで管理すればよかった気もします。)

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

関連するQ&A

  • BLOB型の画像データを表示したい

    環境 OS   : WindowsXP JDK  : 1.5.0_11 Apache : 2.2.4 Tomcat : 5.5.9 eclipse: 3.3.0 struts : 1.2.7 MySQL : 5.0 DBにBlob型として格納した画像データを、 Servlet/JSPでSELECT文を実行して、結果をブラウザに表示する方法が知りたいです。 間違っていたら申し訳ないのですが imgタグからServletを呼び出しその中で処理を行うと 聞きました。 どのような記述をするのでしょうか。 またDBへの接続、SELECT文の実行は分かるのですが その後、どのようにして表示するのでしょうか。 サンプルコードなどありましたら、教えていただきたいと思います。 宜しくお願いします。

    • ベストアンサー
    • Java
  • 画像バイナリデータの処理について

    お世話になります。 ブラウザから、画像データをアップロードし、サーバのデータベース(MySQL)にバイナリデータとして記録した画像データを、AJAXで取得し、ブラウザでJavascriptを使用して表示させたいと考えています。 現在、バイナリデータをAJAXで取得するところまで作成したのですが、” $.' ",#...”といったデータとなっており、文字列として表示されてしまっています。 これをJavascriptで画像データとして認識させる方法はございますでしょうか? よろしくお願いいたします。

  • バイナリーの画像データを読み込む。

    データベースをサイベース社のAdaptive Server Anywhre 7と いうのを使用していて、そのDBのテーブルに、long binaryで画像データ の定義を切ってデータをバイナリで保存してあります。 (もとはBMPの画像をバイナリに変換している) 上記のバイナリデータをVBのフォーム上(イメージ)に表示させるには どのようにしたらいいのでしょうか? もちろん、Loadpicture句を使用するのでしょうが、通常はパスを切ったり して使用すると思うのですが。。 VB始めたばかりでまったく想像つきません。どうか教えてください! 別記:上記サイベースのDBで10回程度連続でDBを読み込みに行くと エラーになるのですが、DB上でそのような回数の指定があるのでしょうか? それとも、ハード的な問題なんでしょうか?いままでそのような経験が ありましたら対策等教えてください。お願いします!

  • 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
  • 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
  • FLASHや画像をランダムに表示

    http://www.gac.jp/article/index.php?stats=question&category=9&id=12579&command=msg を参考にしましたが、IEでは表示されますが、 Firefoxではできません。javascriptに限らずどんなWebブラウザーでも簡単にFLASHや画像をランダムに表示する方法を教えてください。

  • MySQLのBLOBにバイナリで格納した画像を表示

    現在PHPを勉強しはじめた初心者です。今 MYSQLのデータベースを利用してUPLOADした画像を表示させたいと思っております。 そこでMYSQLのBLOBに画像を保存出来まではできたのですが、 そこから表示させる方法がどうしても分かりません。。 こちらが今やっていますスクリプトになります。 <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=”image_display.php?id=1”> ?> <?php $conn=mysql_connect('localhost','aaa','pass'); // DB選択 mysql_select_db(”alpha”); // SQL問合せ // このphpを呼び出す際、idを指定 $sql = select * from beta where(id=$_GET[id]); $result = mysql_query($sql); // 問合せ結果を配列にセット $row = mysql_fetch_array($result); echo $row[1]; // テーブルの2列目のカラムを取得 ?> </body> </html> 自分ではいったいなにが悪いのか分かりません。 どのたかお分かりになるかたいましたらご教授していただけませんでしょうか。 お願いします。

  • BLOBデーターの画像の表示方法を教えてください。

    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> 本やネットで自分なりに調べた結果、これで画像が表示されるはず(!?)だと思っているのですが、残念ながら、画像は×になって表示されません。 初歩的な質問ですみませんが、どうすれば画像は表示されるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlのblob型の画像表示について

    テーブルの項目にblob型を作成し、 phpでテーブルから取得した画像を画面に表示させたいのですが、 以下のように表示させることは可能でしょうか? test.php ---------- ここから画面 ---------------------------------------- 取得したblob型の画像その1.jpg 取得したblob型の画像その2.gif 取得したblob型の画像その3.png それぞれの画像の説明 ---------- ここまで画面 ---------------------------------------- テーブルへのデータ挿入はphpMyAdminから挿入しています。 header('Content-type: image/jpeg'); echo SQLで取得した値; のようにすればjpg画像は表示できましたが、gif画像とpng画像は表示できませんでした。 また、jpg画像のみを表示させることは出来ましたが文章を表示させることはできませんでした。 上記のように一つのphpファイルで複数表示させるのはできないのでしょうか?

    • ベストアンサー
    • PHP
  • MYSQLから、画像表示するには

    symfonyを使用してます。 DBの型はBLOBです、画像の保存はphpadminから、参照ダイアログで登録。 「$photos->getPhotoData()」←DBからとってきたデータ。 以下のソースで、画像表示すると思うのですが、表示しない。 ---ソース1--------------------------------------------- echo '<img src="data:image/jpeg;base64,'.base64_encode($photos->getPhotoData()).'" />' ; ------------------------------------------------------- ソース1を実行すると、「Warning: base64_encode() expects parameter 1 to be string, resource 」と言うエラーが出る。 ---ソース2--------------------------------------------- echo $photos->getPhotoData(); ------------------------------------------------------- ソース2を実行すると「Resource id #126 」と表示される。 表示させる方法をご教授ください。

    • ベストアンサー
    • PHP
布を送ってくれなくなった
このQ&Aのポイント
  • CPV0201という製品の布を送ってくれなくなったため、ドロップレバーを切り替えてみたら表面にあがらなくなってしまった。
  • ブラザー製品のCPV0201で布を送ってもらえなくなったので、ドロップレバーを変更したところ、表面に上がらなくなってしまいました。
  • ブラザーのCPV0201という製品では、布を送ることができなくなったため、ドロップレバーを切り替えて試してみたところ、表面に上がらなくなってしまいます。
回答を見る