我试图在报表布局定义图像元素并设置类型的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到报表的代码中嵌入图像...
- 使用
blob.getBinaryStream()
- 转换使用流
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
InputStream is = new ByteArrayInputStream((byte[]) yourBlobData);
myImage = new DefaultStreamedContent(is, "image/png");
在JSF页面;
<p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" />