1

データベースから画像を取得しようとしています。現在、私は示すことができました:

    `com.mysql.jdbc.Blob@2aba2aba `

私のjsp出力で。それを画像に変換する方法を教えてください。

私は上記を呼び出すために以下を使用しました

photo[i].getPhotoFileData();
4

3 に答える 3

3

これは、JSP よりも HTML ドキュメントの動作に問題があります。HTML は画像を直接埋め込まないことを理解する必要があります。代わりに、<img>タグを使用して、さまざまな URL でホストされている画像を参照します。

データベースに保存されている画像を HTML ページに表示するには、画像の要求を処理できる別のサーブレットが必要になります。JSP は、次のような HTML ドキュメントをレンダリングする必要があります。

<html>
  <head>
  ...
  </head>
  <body>
    ...
    <img src="www.mydomain.com/images/1234.png" />
    ...
  </body>
</html>

次に、/images へのすべてのリクエストを処理する別のサーブレットを作成します。このサーブレットは、データベース呼び出しを行い、取得した BLOB から生のバイトを応答の出力ストリームに送信します。使用している画像エンコーディングに基づいて、Content-Type ヘッダーも正しく設定してください。

画像をリクエスタに送り返すには、2 つのオプションのいずれかがあります。ブロブのバイトを配列として取得し、それを OutputStream に書き込むことができます (例: out.write(blob.getBytes(0,blob.length());)。または、このメソッドを使用して、getBinaryStream()バイトを InputStream から OutputStream にコピーすることもできます。その例を次に示します。

public static void copy(Blob from, OutputStream to)
    throws IOException {
  byte[] buf = new byte[4096];
  try(InputStream is = from.getBinaryStream()) {
    while (true) {
      int r = is.read(buf);
      if (r == -1) {
        break;
      }
      to.write(buf, 0, r);
    }
  }
}

注意: このコードはテストもコンパイルもされていません。開始点としてのみ使用してください。

于 2012-07-23T17:04:53.253 に答える
1

コンテンツではなく、Blob オブジェクトを取得しています。生のバイト データを取得する場合は、Blob オブジェクトに要求する必要があります。たとえば、次のようになります。

Blob blob =  photo[i].getPhotoFileData();
byte[] data = blob.getBytes(0, blob.length());

その場で画像を作成したい場合は、次のように呼び出します。

BufferedImage img = ImageIO.read(new ByteArrayInputStream(data));

その後、画像を保存するか...実際には他に何があるかわかりません。もの。もの。表示します。印刷します。無限の可能性!zombo.comと同じように!

于 2012-07-23T18:26:36.073 に答える
0

最初に blob を入力ストリームから string に変換します。次に、画像 URL の代わりにその文字列を使用します。

ブロブを文字列に変換する

        try {
            Blob blob = staticOffer.getImage(); //blob of image from db
            strOut = new StringBuffer();
            String aux;
            BufferedReader br;

            br = new BufferedReader(new InputStreamReader(blob.getBinaryStream()));
            while ((aux=br.readLine())!=null) {
                strOut.append(aux);
            }
            offerPicStr = strOut.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }

その文字列を次の方法でhtml/jspに使用します

<img src="data:image/jpeg;base64,${offerPicStr}" width="100" height="100"></img>
于 2015-11-20T12:29:28.653 に答える