如何使用JasperReports查看Oracle中blob列的图像?

我尝试在报表布局中定义一个图像元素,并将类型设置为java.io.Inputstream,但这不起作用,我也尝试设置为java.awt.Image并且都不起作用,我得到的例外是

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 

我也尝试谷歌,但结果是我现在正在做的事情。

谢谢你的帮助。

没有看到你如何调用blob将图像嵌入报告代码中…

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

例如:

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

这将返回BufferedImage的实例,该实例是java.awt.Image子类,并且应该是嵌入到报表中的合适对象。

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

也可以看看:

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

在jsf页面;