arcanum_jp’s blog

おっさんの日記

Imageクラスオブジェクトに画像を設定する

データベース上から持ってきたデータがbyte[]なんだけど、それをImageクラスオブジェクトに入れたくて試行錯誤した結果。これでいいのかな??

final byte[] decoded = ... 画像をByte[]で取得
Image image = new Image(
        "image",
        new WebResource() {
            @Override
            public IResourceStream getResourceStream() {

                return new AbstractResourceStream() {
                    private ByteArrayInputStream _input;
                    @Override
                    public InputStream getInputStream() throws ResourceStreamNotFoundException {
                        _input = new ByteArrayInputStream(decoded);
                        return _input;
                    }

                    @Override
                    public void close() throws IOException {
                        _input.close();
                    }
                };

            }
        }
);
Image img = new Image(
    "img",
    new WebResource() {
        @Override
        public IResourceStream getResourceStream() {
            try {
                return new UrlResourceStream(new URL("http://example.com/back.jpg"));
            } catch (MalformedURLException e) {
                throw new RuntimeException(e);
            }
        }
    }
);