2012-09-04 43 views
4

我试着在报表布局中定义一个图像元素,并将类型设置为java.io.Inputstream,但这不起作用,我也尝试设置为java.awt.Image,两者都不起作用,我得到的异常是如何使用JasperReports从Oracle blob列中查看图像?

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

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

而且我试图谷歌,但结果是我在做什么现在。

感谢您的帮助。

回答

2

没有看到你是如何调用BLOB到报表的代码中嵌入图像...

  1. 使用blob.getBinaryStream()
  2. 使用javax.imageio.ImageIO.read(InputStream)转换流。

例如:

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

这将返回的BufferedImage一个实例,其子类java.awt.Image,并且应该具有合适的对象在报告中嵌入。

该示例中显示的blob变量必须使用报表中的适当变量(表示来自所需列的数据)。

参见:

+0

谢谢,这只适用于我。 最初我将Blob传递给report参数,没有任何类型的转换或流转换。 – Openmindeo

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

;

<p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" /> 
相关问题