如何将字节数组转换为图像

时间:2011-08-12 13:35:54

标签: java-ee jsf-2

我有一个SQL数据库,其中包含存储为字节数组的图像。我已经做了一些搜索,并没有找到很多关于如何将这些转换为JSF页面的可用图像类型。任何帮助将不胜感激!

提前致谢!

(使用JSF 2.0)

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

尝试执行与this类似的操作。

答案 2 :(得分:0)

这不是一个有效的例子,但它概述了如何动态显示存储在数据库中的图像的方法。你必须创建一个servlet(取决于你使用它的框架可能是一个struts动作左右),其行为类似于一个图像:

@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页面中,您必须相应地引用servlet:

<img src=".../images/image1234" />

希望这有帮助。