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

Java 如何使用JasperReports在Oracle中查看blob列中的图像?,java,oracle,jasper-reports,Java,Oracle,Jasper Reports,我尝试在报告布局中定义一个image元素,并将type设置为java.io.Inputstream,但这不起作用,我还尝试将type设置为java.awt.image,但两者都不起作用,我得到的例外是 java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to java.awt.Image 或 我也试着用谷歌搜索,但结果就是我现在正在做的 感谢您的帮助。您没有看到如何调用blob将图像嵌入到报表代码中 使用 使用转换流 例如:

我尝试在报告布局中定义一个image元素,并将type设置为java.io.Inputstream,但这不起作用,我还尝试将type设置为java.awt.image,但两者都不起作用,我得到的例外是

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

我也试着用谷歌搜索,但结果就是我现在正在做的


感谢您的帮助。

您没有看到如何调用blob将图像嵌入到报表代码中

  • 使用
  • 使用转换流
  • 例如:

    javax.imageio.ImageIO.read( blob.getBinaryStream() )
    
    这将返回一个实例,它的子类
    java.awt.Image
    ,应该是一个适合嵌入报表中的对象

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

    另见:

    在jsf页面中

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

    谢谢,这只适合我。最初,我将blob传递给report参数,而不进行任何类型的强制转换或流转换。
    InputStream is = new ByteArrayInputStream((byte[]) yourBlobData);
    myImage = new DefaultStreamedContent(is, "image/png");
    
    <p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" />