バイト配列として格納されたイメージを含むSQLデータベースがあります。私はいくつかの検索を行いましたが、JSFページのためにこれらを使用可能なイメージタイプに変換する方法についてはあまり見当たりませんでした。どんな助けでも大歓迎です!バイト配列をイメージに変換する方法
ありがとうございます! (JSF 2.0を使用して)
バイト配列として格納されたイメージを含むSQLデータベースがあります。私はいくつかの検索を行いましたが、JSFページのためにこれらを使用可能なイメージタイプに変換する方法についてはあまり見当たりませんでした。どんな助けでも大歓迎です!バイト配列をイメージに変換する方法
ありがとうございます! (JSF 2.0を使用して)
コントローラを作成して、正しいメディアタイプ(image/*)
を出力し、バイトを出力します。何かを変換する必要はありません。画像を操作する場合は、ImageIO.read
を使用して変換できます。しかし、あなたの質問から、イメージを表示したいと思うように聞こえます。
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
byte[] bytes = ...
resp.setContentType(mimeType);
OutputStream out = resp.getOutputStream();
out.write(bytes);
}
thisに似た何かをしてみてください。
これは実際の例ではありませんが、データベースに格納されている画像を動的に表示する方法の概要を示しています。
@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" />
希望すると便利です。
はいありがとう! – cdub
これは、画像がどのようにByteArrayに変換されたかによって異なります。 – Nivas
適切なサイズのjava.awt.image.BufferedImageを作成し、バイトのグループをjava.awt.Colorオブジェクトに変換し、ColorオブジェクトのgetRGB()メソッドを使用するコードを記述すると、 RGB値を取得してBufferedImageのsetRGB()メソッドを取得しますか? – compman
私は 'イメージロゴのようなものを試しました。 EventDTOイベント。 logo = toolkit.createImage(event.getLogo()); ' – cdub