2014-07-19 43 views
1

我原本想知道Swing支持哪種圖像格式,獨立於平臺。 Swing是我的首選工具包,我正在研究在我的愛好工作中使用哪種圖像格式的決定。一旦我知道哪些格式本質上受支持,我將決定是否與其中一個格式一起工作更簡單,或者是否更容易找到並使用獲得適當許可的第三方庫。然而,我遇到了一些困難,我希望能夠幫助理清我出錯的地方。On Swing圖像格式和服務提供商

我已經做了一些挖過的javax.imageio API和我的嘗試失敗,以確定支持哪些格式的我的電腦上,通過執行以下操作:

package iiortester; 

import javax.imageio.spi.IIORegistry; 
import javax.imageio.spi.ImageReaderSpi; 

public class IIORTester { 
    public static void main(String[] args) { 
     IIORegistry iioRegistry = IIORegistry.getDefaultInstance(); 
     ImageReaderSpi imageReaderSpi = 
       iioRegistry.getServiceProviderByClass(ImageReaderSpi.class); 
     System.out.println(imageReaderSpi); // output is null 
    } 
} 

默認使用IIORegistry實例並報告類別ImageReaderSpi當我撥打ServiceRegistry.getCategories()時,但是當我嘗試獲取以上代碼中的圖像讀取器服務提供商界面時,我收到null參考。這可能暗示我不會以正確的方式進行,我的計劃ImageReaderWriterSpi.getFormatNames()已被挫敗。但是,即使成功報告支持的圖像格式,也不會告訴我這些格式是否在任何JVM中固有支持,或者由於我正在運行Windows 7 JVM而受到支持。

我看錯了地方?大概。我應該在哪裏看?我不知道。 JVM甚至有內置的ImageIO服務提供者,還是僅用於第三方庫註冊? 在Swing API中,軟件可以在哪裏查找支持的圖像格式?

回答

2

所有JRE都應該支持GIF,JPEG和PNG。

作爲任何特定JRE支持的更具體的答案,請參閱提供大量信息的MediaTypes源代碼。

+0

我覺得有點傻,看起來有多簡單,現在我明白我錯過了:'ImageIO.getReaderMIMETypes()'。感謝您關於跨平臺的GIF/JPEG/PNG的說明:您知道這是否在官方正式聲明? – muffin

+0

*「你知道這是否在某處正式說明嗎?」*我確定我已經在文檔或教程中看到它*含糊其詞。它看起來像*「一個JRE將支持各種類型的圖像,但**應該包括** JPG,GIF和PNG」* .. –

1

要查看支持的圖像格式:

要查看哪些文件可以被讀取:ImageIO.getReaderFormatNames();
要查看哪些文件可以這樣寫:ImageIO.getWriterFormatNames();

JOptionPane.showMessageDialog(null,"Java Image Formats:\r\nread:\t"+Arrays.toString(ImageIO.getReaderFormatNames())+"\r\nwrite:\t"+Arrays.toString(ImageIO.getWriterFormatNames())); 

圖像類型的在Java中註冊將顯示在列表中。

+0

這些逃生正在爲我工​​作,參見。這[截圖](http://i.imgur.com/ti5AgPp.png) – muffin