2011-08-12 3 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

나는 'image logo'와 같은 것을 시도했다. 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

OK 혼란을 드려 죄송합니다. 예, 표시하고 싶습니다. 어떤 자료에 대한 포인터가 도움이 될 것입니다. 시간 내 주셔서 감사합니다. – cdub

+0

또는 "올바른 미디어 유형 (image/*)을 출력하고 바이트를 출력하는 컨트롤러를 만드는 방법"에 대한 추가 설명이 있습니다. – cdub

+0

이 예제를보십시오. http://www.exampledepot.com/egs/javax.servlet /GetImage.html. 파일에서 읽는 대신 DB에서 읽어야합니다. –

0

이것은 실제 작동하지는 않지만 데이터베이스에 저장된 이미지를 동적으로 표시하는 방법을 설명합니다. 귀하의 JSF 페이지에서

@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()); 
    } 

} 

그에 따라 서블릿 참조 할 수 있습니다 :

을 당신은 이미지처럼 동작 (당신이이 스트럿 작용 정도있을 수 있습니다 사용하는 프레임 워크에 따라) 서블릿을 만들어야합니다
<img src=".../images/image1234" /> 

희망이 도움이됩니다.

+0

예 정말 고마워요! – cdub

관련 문제