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

时间:2012-09-04 22:35:06

标签: java oracle jasper-reports

我尝试在报表布局中定义一个图像元素,并将类型设置为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

此外,我试图谷歌,但结果是我现在正在做的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

    另见:

答案 1 :(得分:0)

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

在jsf页面中;

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