2012-09-04 3 views
4

보고서 레이아웃에서 이미지 요소를 정의하고 유형을 java.io.Inputstream으로 설정해 보았습니다.하지만 작동하지 않습니다. 또한 java.awt.Image로 설정을 시도했지만 둘 다 작동하지 않습니다. 예외가 발생했습니다. Oracle의 Blob 열에서 JasperReports를 사용하여 이미지를 보는 방법은 무엇입니까?

java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to java.io.InputStream 

java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to java.awt.Image 

또는

또한 나는 구글을 시도하지만 결과는 내가 지금 뭘하는지한다는 것이다.

도움 주셔서 감사합니다. 당신이 당신의 보고서 코드 내에서 이미지를 삽입하는 블롭를 호출하는 방법을 보지 않고

답변

2

...

  1. 사용 blob.getBinaryStream().
  2. javax.imageio.ImageIO.read(InputStream)을 사용하여 스트림을 변환합니다. 예를 들어

는 :

javax.imageio.ImageIO.read(blob.getBinaryStream()) 

java.awt.ImageBufferedImage 서브 클래스의 인스턴스를 리턴하며, 리포트에 삽입 할 적절한 객체이어야한다.

예제에 표시된 blob 변수는 보고서의 적절한 변수 (원하는 열의 데이터를 나타냄)를 사용해야합니다.

은 참조 : JSF 페이지

+0

감사합니다. 이것은 저에게 맞습니다. 처음에는 모든 유형의 형 변환이나 스트리밍 변환없이 blob을 보고서 매개 변수에 전달했습니다. – Openmindeo

0
InputStream is = new ByteArrayInputStream((byte[]) yourBlobData); 
myImage = new DefaultStreamedContent(is, "image/png"); 

;

<p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" /> 
관련 문제