2010-04-18 48 views

回答

4

你會做這樣

Image img = ImageIO.read(new ByteArrayInputStream(imageBytes)); 
ImageIcon imgIcon = new ImageIcon(img); 

JLabel label = new JLabel(imgIcon); 

JPG2000解碼器不使用標準SDK提供的,你應該前往here(Java高級圖像),並使用正確的解碼器,用於該格式。

+0

我已經下載了jai(來自java網站,不是從你的鏈接,因爲我找不到jai文件來下載它),但是,當我試圖用你的方式來閱讀圖像。我得到了空例外,我不知道爲什麼。即使我沒有添加jar文件到我的項目(引用他們)..所以,這是什麼解決方案? – Q8Y 2011-12-25 09:50:59

3

很明顯,已經從Java Advanced Imaging(JAI)中刪除了jpeg2000 /(.jp2)文件的支持。

通過卸載JAI 1.1.3並安裝舊版本1.1,我現在要讀取.jp2文件並不再看到空指針。

版本1.1可在這裏找到。 http://download.java.net/media/jai-imageio/builds/release/1.1/

1.1版列出的編解碼器對 - G3FAX g4fac jiio jp2k JPEG和PNG

+0

鏈接已死,這是一個到oracle檔案的新鏈接http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html – Kalaschni 2016-12-15 09:12:49

2

唯一的選擇,我知道都是基於jj2000。

JAI-ImageIO的核心通過一個額外的第三方模塊提供支持:

https://github.com/stain/jai-imageio-core

https://github.com/jai-imageio/jai-imageio-jpeg2000

它會與ImageIO的註冊自己,然後,你就可以像讀取任何png,bmp或jpeg一樣讀取jpeg2000文件。

雖然jj2000本身就是一個選項,但api並非專爲日常使用而設計。

其他選項包括JMRTD,它提供了jj2000, 或商業產品JDeli自己的包裝。