我有一个SQL数据库,其中包含存储为字节数组的图像。我已经做了一些搜索,并没有找到很多关于如何将这些转换为JSF页面的可用图像类型。任何帮助将不胜感激!
提前致谢!
(使用JSF 2.0)
答案 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" />
希望这有帮助。