2011-08-12 17 views
0

バイト配列として格納されたイメージを含むSQLデータベースがあります。私はいくつかの検索を行いましたが、JSFページのためにこれらを使用可能なイメージタイプに変換する方法についてはあまり見当たりませんでした。どんな助けでも大歓迎です!バイト配列をイメージに変換する方法

ありがとうございます! (JSF 2.0を使用して)

+0

これは、画像がどのようにByteArrayに変換されたかによって異なります。 – Nivas

+0

適切なサイズのjava.awt.image.BufferedImageを作成し、バイトのグループをjava.awt.Colorオブジェクトに変換し、ColorオブジェクトのgetRGB()メソッドを使用するコードを記述すると、 RGB値を取得してBufferedImageのsetRGB()メソッドを取得しますか? – compman

+0

私は 'イメージロゴのようなものを試しました。 EventDTOイベント。 logo = toolkit.createImage(event.getLogo()); ' – cdub

答えて

1

コントローラを作成して、正しいメディアタイプ(image/*)を出力し、バイトを出力します。何かを変換する必要はありません。画像を操作する場合は、ImageIO.readを使用して変換できます。しかし、あなたの質問から、イメージを表示したいと思うように聞こえます。

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
    byte[] bytes = ... 
    resp.setContentType(mimeType);  
    OutputStream out = resp.getOutputStream(); 
    out.write(bytes); 
} 
+0

私は混乱のためにお詫びします、はい私はちょうどそれを表示したいと思います、任意の資料への任意のポインタが役立つだろう。あなたのお時間をありがとうございました! – cdub

+0

または、「正しいメディアタイプ(image/*)を出力してバイトを出力するコントローラを作成するだけ」という追加の説明があります。 – cdub

+0

この例を見てくださいhttp://www.exampledepot.com/egs/javax.servlet /GetImage.html。ファイルから読み込む代わりに、dbから読み込む必要があります。 –

0

thisに似た何かをしてみてください。

0

これは実際の例ではありませんが、データベースに格納されている画像を動的に表示する方法の概要を示しています。

@WebServlet("/images/*") 
public class ImageServlet extends HttpServlet { 

    @Override 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 

     /* this is pseudo code, retrieve the image and its metadata from database. 
     * Maybe you do not want to use a parameter but a RESTful approach, e.g. '/images/image1234'. 
     */ 
     MyImage myimg = MyDatabase.getImage(request.getParameter("imageID")); 

     /* you may want to support different encodings (e.g. JPG, PNG, TIFF) */ 
     response.setContentType(myimg.getContentType()); 

     /* obtain output stream and stream the bytes back to the client */ 
     OutputStream out = response.getOutputStream(); 

     /* stream it, here you have different options, finally close the stream */ 
     out.write(myimg.getBytes()); 
    } 

} 

をそれに応じてサーブレットを参照する必要があなたのJSFページでは:

あなたは画像のように動作します(あなたはそれがストラットアクションまたはそうかもしれ使うフレームワークに依存する)サーブレットを作成する必要があります
<img src=".../images/image1234" /> 

希望すると便利です。

+0

はいありがとう! – cdub

関連する問題