2009-06-03 15 views
4

ByteArrayOutputStreamには、JPEGイメージがバイト単位で格納されています。私の必要条件は、画像をJSPページに表示することです(HTMLタグを使用してフロントエンドに画像を表示する)。それ、どうやったら出来るの?HTMLタグを使用してJSPページにバイト単位でイメージを表示する方法はありますか?

私はBufferedImageクラスを参照していますが、私はこれに慣れているので私にとって混乱しています。

答えて

3

"data" URI(小画像の場合に便利)を使用しない限り、ブラウザはHTMLと画像の2つの要求を行います。 ByteArrayOutputStreamのデータを含むイメージの後続の要求に応答するのに十分な情報を含むimgタグを出力する必要があります。

JPEGファイルの入手方法やサーバーの拡張方法によっては、イメージをディスクに書き込んだり、メモリにキャッシュしたり、再生成したり、それらを組み合わせたりすることがあります。

ブラウザが実際の画像を最初に要求するまで画像の生成を遅らせることができれば、それはかなり理想的です。それは、グラフ上の点や、生成するサムネイルのサイズ、画像の種類など、画像のURLに余分なパラメータを入れることです。

JSPとHTMLの両方が初めての方は、まずHTML側に集中することを強くおすすめします。動的にサービスを提供する方法を検討する前に、あなたが提供する必要があるものと、ブラウザが何をするのかを検討します。静的なページやHTMLや画像のファイルから始め、代わりにそれらを生成する方法を考えてください。

18

イメージが大きすぎない場合は、次のようにすることができます。 iVBORw0KGgoAAAANS

<img src="data:image/jpg;base64,iVBORw0KGgoAAAANS..." /> 

は... Base64エンコードされたバイトです。

Base64エンコーディングはOstermiller Java Utilities' Base64 Java Libraryorg.apache.commons.codec.binary.Base64のように、ライブラリで行うことができます。

+0

このメソッドは、レンダリング中のhtmlに画像をインライン展開します。ファイルサイズを増やすこともできます – Ram

+0

私の画像は非常に小さいです..サイズ幅= "166"高さ= "44" ..のバーコード画像.. In上記のByteArrayOutputStreamからイメージを取得する方法は? –

+0

166x44はちょうど "非常に小さい"ものではありません(通常、データURIは本当に小さな画像に使用されます)が、バーコードを使用すると、それを取り除くことができます。基本的には、データをBase64でエンコードする必要があります。これは別個の非常に具体的な質問です。スタックオーバーフローの別の場所で既に説明されています。 –

関連する問題