4

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

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

谢谢你的帮助。

4

2 回答 2

3

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

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

例如:

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

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

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

也可以看看:

于 2012-09-04T22:39:25.720 回答
0
InputStream is = new ByteArrayInputStream((byte[]) yourBlobData);
myImage = new DefaultStreamedContent(is, "image/png");

在jsf页面中;

<p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" />
于 2014-02-19T09:12:06.877 回答