2012-09-04 73 views
4

我試着在報表佈局中定義一個圖像元素,並將類型設置爲java.io.Inputstream,但這不起作用,我也嘗試設置爲java.awt.Image,兩者都不起作用,我得到的異常是如何使用JasperReports從Oracle blob列中查看圖像?

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

沒有看到你是如何調用BLOB到報表的代碼中嵌入圖像...

  1. 使用blob.getBinaryStream()
  2. 使用javax.imageio.ImageIO.read(InputStream)轉換流。

例如:

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

這將返回的BufferedImage一個實例,其子類java.awt.Image,並且應該具有合適的對象在報告中嵌入。

該示例中顯示的blob變量必須使用報表中的適當變量(表示來自所需列的數據)。

參見:

+0

謝謝,這隻適用於我。 最初我將Blob傳遞給report參數,沒有任何類型的轉換或流轉換。 – Openmindeo

0
InputStream is = new ByteArrayInputStream((byte[]) yourBlobData); 
myImage = new DefaultStreamedContent(is, "image/png"); 
在JSF頁面

;

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