如何查看从BLOB列的图像在Oracle中的JasperReports?(How to view a

2019-06-27 20:10发布

我试图在报表布局定义图像元素并设置类型的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

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

谢谢你的帮助。

Answer 1:

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

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

例如:

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

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

blob中的例子中所示变量将必须使用适当的变量从报告(其表示从期望的列中的数据)。

也可以看看:

  • https://forums.oracle.com/forums/thread.jspa?threadID=2081381


Answer 2:

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

在JSF页面;

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


文章来源: How to view an image from blob column in Oracle with JasperReports?