- PR -

JSP ブラウザに画像出力

投稿者投稿内容
ヤミーズ
常連さん
会議室デビュー日: 2004/09/06
投稿数: 27
お住まい・勤務地: 東京都世田谷区
投稿日時: 2004-10-29 11:10
いつも大変参考にさせて頂いてます。

 ”DBからjpeg画像を読み込みブラウザに表示する”と
いうことを行いたいのですがうまくできません。ご存知の方ご教授願います。

 ※ServletOutputStream sout = response.getOutputStream();
  JPEGCodec.createJPEGEncoder(sout).encode(image);
  ではブラウザに表示されますが、pageにいきなり表示される為、
  page編集可能なHTML埋め込みでの方法を考えております。

 現状ブレイクダウンしてフォルダにあるjpegファイルを下記方法で試みましたが、
うまくできません。不備、指摘等ありましたらお願いいたします。

【ソース】 
 //画像をストリームに格納
 File f = new File(application.getRealPath("./images/taifuu16.jpg") );
 FileInputStream fis = new FileInputStream(f);

 //JPEG形式に変換
 JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(fis);

 //イメージバッファ形式に格納
 BufferedImage image = decoder.decodeAsBufferedImage();

 //HTML表示★NG★
 img_data = " <img src = "+ image + " ><P>" ;

【結果】
 画像サイズらしい外枠は表示されるのですが、画像は表示されない。


以上 よろしくお願いいたします。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-10-29 11:56
 それじゃあ、いくら頑張っても、表示されませんよ・・・。
コード:
  <HTML>
    <HEAD>
      <TITLE>サンプル</TITLE>
    </HEAD>
    <BODY>
      <IMG SRC="ImageServlet">
    </BODY>
  </HTML>

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-10-29 12:24
html の仕組みをまず勉強しましょうね。
src 属性には画像の実データを差し込むんではなくイメージのパスを表記します。
matobaa
常連さん
会議室デビュー日: 2002/12/26
投稿数: 21
投稿日時: 2004-10-29 13:46
相乗りします。
引用:
src 属性には画像の実データを差し込むんではなくイメージのパスを表記します。


画像の実データを差し込む方法はありませんか? あってもいいと思うんですが……。
コード:
<html><body>
<pdf width=200 height=200>
%PDF-1.4
1 0 obj
<< ... >>
endobj
xref
1 0 00000009 0
trailer
startxref
24
%%EOF
</pdf></body></html>


みたいなことできないかなぁ、と思っているわけですが。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-10-29 14:00
>画像の実データを差し込む方法はありませんか?
>みたいなことできないかなぁ、と思っているわけですが。
img data スキーム
の3単語で検索すると
RFC 2397”で策定中のURLスキーム“data:”
が出ます。
あとは、受け取るブラウザしだいです。
==========================
HTML全体の圧縮とか、途中のキャッシュがどうなるかは知りません。
==========================
マルチパートのレスポンスを受けられるブラウザはあるか?
=======================================================
アクセスカウンタのサンプル
... 時間表示, <img src="/cgi-bin/count.cgi?display=clock">,
ですから、画像も別のサーブレットで返せるのでは?
?以降のパラメータは生のDBアクセスキーとかではまずいかも
しれないが(場合によっては)
--------------------------------------------------------
バイナリーXMLに期待しますか?
XML全体のバイナリー化でなく、部分的なもの(標準は特に無い)
・メールには添付ファイルがある
・DBにはBLOB型がある
・SGMLには NDATA がある

[ メッセージ編集済み 編集者: MMX 編集日時 2004-10-30 16:16 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-10-29 14:19
SVGを使ったらいかがですか?
ベクトルイメージですので、
JPEGのようなビットマップイメージには適用できませんが、
テキスト(XML)で記述できます。

>page編集可能なHTML埋め込みでの方法を考えております。
どういう目的で、何をしたいのか、よくわかりません。
ブラウザでペイントツールみたいなことをやりたいのですか?

[ メッセージ編集済み 編集者: かつのり 編集日時 2004-10-29 14:23 ]
ヤミーズ
常連さん
会議室デビュー日: 2004/09/06
投稿数: 27
お住まい・勤務地: 東京都世田谷区
投稿日時: 2004-10-30 21:19
MMX様、taku様、かつのり様、matobaa様、インギ様書き込みありがとうございます。

 現状の調査結果を連絡します。

 MMX様のご指摘頂いた内容で調査した結果下記HTMLで表示されるようですが、
IE6では無理でネスケなら表示されるという感じでした。
MMX様のご指摘どおりブラウザによるようです。

他になにか良い方法はないでしょうか?


 <img src="data:image\jpeg;base64,実データ


TO:かつのり様

 あいまいな書き込み申し訳ございません。下記に再度記載します。

 何をしたいのかは
  ”DBからjpeg画像を読み込みブラウザに表示する”
                        です。

 画像データをラージオブジェクトとしてDBに保存し、
 読み込んだ画像データをファイルシステムに展開せず
 スタック領域?のままブラウザに表示する。
 ファイルシステムに展開しないのでディレクトリパスはありません。

 ※語句が間違ってるかいしれませんがイメージは上記内容です。

以上 よろしくお願いいたします。 

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-10-31 00:42
<img src="xxx.yyy.XXXServlet?id=1234">
みたいにして、対象とするHTMLに貼り付けると、
ブラウザが画像を展開するときに、
サーバのXXXServletというサーブレットに対して
リクエストが発生します。

サーブレット側ではリクエストパラメータをキーに
データベースからラージオブジェクト(画像)を取得します。
ResultSet#getBinaryStream(String column)でストリームが取得できますので、
ServletOutputStreamに対して、取得したストリームからデータを流し込めば
ブラウザで画像の表示が可能です。

サーブレットは別にHTML以外のものを出力しても構いませんので、
画像のバイナリを返せば、ブラウザは画像と認識して表示してくれます。

サーブレットではあまり見かけませんが、
よく画像形式のレンタルアクセスカウンタでやっています。
<img src="http://xxx.xxx.xxx/xxx.cgi">見たいなのを
見たことないでしょうか?

スキルアップ/キャリアアップ(JOB@IT)