JavaTM 2 Platform
Standard Ed. 6

javax.imageio.spi
類別 ImageReaderSpi

java.lang.Object
  繼承者 javax.imageio.spi.IIOServiceProvider
      繼承者 javax.imageio.spi.ImageReaderWriterSpi
          繼承者 javax.imageio.spi.ImageReaderSpi
所有已實作的介面:
RegisterableService

public abstract class ImageReaderSpi
extends ImageReaderWriterSpi

用於 ImageReader 的服務提供者介面 (SPI)。有關服務提供者類別的更多資訊,請參見 IIORegistry 類別的註釋。

每個 ImageReaderSpi 都提供了有關與之關聯的 ImageReader 類別的幾種型別的資訊。

使用 getVendorNamegetDescriptiongetVersion 方法可獲得定義 SPI 類別和此類別簡明描述的供應商的名稱。可將這些方法進行國際化以提供特定於語言環境的輸出。這些方法主要用於提供可用於組織彈出選單或其他列表的簡短可讀資訊。

使用 getFormatNamesgetFileSuffixesgetMIMETypes 方法可獲得與此服務有關聯的格式名稱、檔案後綴和 MIME 型別的列表。可以使用這些方法來標識候選 ImageReader,從而基於手動格式選擇、檔案命名或 MIME 關聯(例如,通過 HTTP 存取檔案或檔案作為電子郵件附件)對特定的檔案或串流進行解碼。

canDecodeInput 方法提供了確定哪些 ImageReader 最有可能解析特定資料串流的一條更可靠途徑。此方法允許服務提供者檢查實際的串流內容。

最後,通過調用 createReaderInstance 方法,可獲得與此服務提供者關聯的 ImageReader 類別的實例。任何重量級的初始化,例如載入本地資源庫或創建大型表,都應推遲,至少應該推遲到完成此方法的第一次調用。

另請參見:
IIORegistry, ImageReader

欄位摘要
protected  Class[] inputTypes
          將從 getInputTypes 返回的 Class 物件陣列,該陣列最初為 null
static Class[] STANDARD_INPUT_TYPE
          將從 getInputTypes 返回的單元素陣列,該陣列最初包含 ImageInputStream.class
protected  String[] writerSpiNames
          將從 getImageWriterSpiNames 返回的字元串陣列,該陣列最初為 null
 
從類別 javax.imageio.spi.ImageReaderWriterSpi 繼承的欄位
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
 
從類別 javax.imageio.spi.IIOServiceProvider 繼承的欄位
vendorName, version
 
建構子摘要
protected ImageReaderSpi()
          建構一個空的 ImageReaderSpi
  ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class[] inputTypes, String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
          用給定的一組值建構 ImageReaderSpi
 
方法摘要
abstract  boolean canDecodeInput(Object source)
          如果給定的源物件看起來是此 reader 支持的格式,則返回 true
 ImageReader createReaderInstance()
          返回與此服務提供者關聯的 ImageReader 實作的實例。
abstract  ImageReader createReaderInstance(Object extension)
          返回與此服務提供者關聯的 ImageReader 實作的實例。
 String[] getImageWriterSpiNames()
          返回一個 String 陣列,其包含所有能夠理解由與此服務提供者關聯的 ImageReader 使用的內部元資料表示形式的 ImageWriterSpi 類別的完全限定名。
 Class[] getInputTypes()
          返回 Class 物件陣列,指示可用作 reader 的 setInput 方法參數的物件型別。
 boolean isOwnReader(ImageReader reader)
          如果傳入的 ImageReader 物件為與此服務提供者關聯的 ImageReader 的實例,則返回 true
 
從類別 javax.imageio.spi.ImageReaderWriterSpi 繼承的方法
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
 
從類別 javax.imageio.spi.IIOServiceProvider 繼承的方法
getDescription, getVendorName, getVersion, onDeregistration, onRegistration
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

STANDARD_INPUT_TYPE

public static final Class[] STANDARD_INPUT_TYPE
將從 getInputTypes 返回的單元素陣列,該陣列最初包含 ImageInputStream.class


inputTypes

protected Class[] inputTypes
將從 getInputTypes 返回的 Class 物件陣列,該陣列最初為 null


writerSpiNames

protected String[] writerSpiNames
將從 getImageWriterSpiNames 返回的字元串陣列,該陣列最初為 null

建構子詳細資訊

ImageReaderSpi

protected ImageReaderSpi()
建構一個空的 ImageReaderSpi。為提供所有方法的可用版本,由子類別負責初始化實例變數和/或覆寫方法實作。


ImageReaderSpi

public ImageReaderSpi(String vendorName,
                      String version,
                      String[] names,
                      String[] suffixes,
                      String[] MIMETypes,
                      String readerClassName,
                      Class[] inputTypes,
                      String[] writerSpiNames,
                      boolean supportsStandardStreamMetadataFormat,
                      String nativeStreamMetadataFormatName,
                      String nativeStreamMetadataFormatClassName,
                      String[] extraStreamMetadataFormatNames,
                      String[] extraStreamMetadataFormatClassNames,
                      boolean supportsStandardImageMetadataFormat,
                      String nativeImageMetadataFormatName,
                      String nativeImageMetadataFormatClassName,
                      String[] extraImageMetadataFormatNames,
                      String[] extraImageMetadataFormatClassNames)
用給定的一組值建構 ImageReaderSpi

參數:
vendorName - 供應商名稱,它是一個非 nullString
version - 版本標識符,它是一個非 nullString
names - 指示格式名稱的一個非 nullString 陣列。必須至少有一個項。
suffixes - 指示常用檔案後綴的 String 陣列。如果沒有定義後綴,則應將其指定為 null。長度為 0 的陣列將被標準化為 null
MIMETypes - 指示格式的 MIME 型別的 String 陣列。如果沒有定義 MIME 型別,則應將其指定為 null。長度為 0 的陣列將被標準化為 null
readerClassName - 所關聯的 ImageReader 類別的完全限定名,它為一個非 nullString
inputTypes - 指示合法輸入型別的長度至少為 1 的 Class 物件的非 null 陣列。
writerSpiNames - 命名所有與 ImageWriter 關聯的類別的 String 陣列,或者為 null。長度為 0 的陣列將被標準化為 null
supportsStandardStreamMetadataFormat - 一個 boolean 值,指示串流元資料物件是否可使用由標準元資料格式描述的階層樹。
nativeStreamMetadataFormatName - 從 getNativeStreamMetadataFormatName 返回的一個 String,或者為 null
nativeStreamMetadataFormatClassName - 將用於實例化從 getNativeStreamMetadataFormat 返回的元資料格式物件的 String,或者為 null
extraStreamMetadataFormatNames - 從 getExtraStreamMetadataFormatNames 返回的 String 陣列,或者為 null。長度為 0 的陣列將被標準化為 null
extraStreamMetadataFormatClassNames - 用於實例化從 getStreamMetadataFormat 返回的元資料格式物件的 String 陣列,或者為 null。長度為 0 的陣列將被標準化為 null
supportsStandardImageMetadataFormat - 一個 boolean 值,指示圖像元資料物件是否可使用由標準元資料格式描述的階層樹。
nativeImageMetadataFormatName - 從 getNativeImageMetadataFormatName 返回的一個 String,或者為 null
nativeImageMetadataFormatClassName - 用於實例化從 getNativeImageMetadataFormat 返回的元資料格式物件的 String,或者為 null
extraImageMetadataFormatNames - 從 getExtraImageMetadataFormatNames 返回的 String 陣列。長度為 0 的陣列將被標準化為 null
extraImageMetadataFormatClassNames - 用於實例化從 getImageMetadataFormat 返回的元資料格式物件的 String 陣列,或者為 null。長度為 0 的陣列將被標準化為 null
拋出:
IllegalArgumentException - 如果 vendorNamenull
IllegalArgumentException - 如果 versionnull
IllegalArgumentException - 如果 namesnull 或長度為 0。
IllegalArgumentException - 如果 readerClassNamenull
IllegalArgumentException - 如果 inputTypesnull 或長度為 0。
方法詳細資訊

getInputTypes

public Class[] getInputTypes()
返回 Class 物件陣列,指示可用作 reader 的 setInput 方法參數的物件型別。

對於大多數只接受來自 ImageInputStream 的輸入的 reader,應返回一個套件含 ImageInputStream.class 的單元素陣列。

返回:
null 的長度至少為 1 的 Class 物件陣列。

canDecodeInput

public abstract boolean canDecodeInput(Object source)
                                throws IOException
如果給定的源物件看起來是此 reader 支持的格式,則返回 true。從此方法返回 true 並不保證將成功讀取,只表示基於對串流內容的簡明檢查應該有機會成功。如果此源為 ImageInputStream,實作通常將首先檢查串流的前幾個位元組以獲取與格式關聯的“幻數”。實際的讀取已開始後,在解碼完成之前的任何時間 reader 仍有可能指示失敗。

物件的狀態不受影響非常重要,這樣其他的 ImageReaderSpi 才能夠正確確定它們是否能解碼此物件。特別地,如果該源為 ImageInputStream,應使用 mark/reset 對保護此串流的位置。

對於可能嘗試讀取幾乎所有串流的格式(比如“原始”格式),為避免因採用更相近的比對而引起調用,應返回 false

如果 source 不是由 getInputTypes 返回的類別之一的實例,此方法應只返回 false

參數:
source - 要解碼的物件(通常是一個 ImageInputStream)。
返回:
如果此串流可能解碼,則返回 true
拋出:
IllegalArgumentException - 如果 sourcenull
IOException - 如果讀取該串流時發生 I/O 錯誤。

createReaderInstance

public ImageReader createReaderInstance()
                                 throws IOException
返回與此服務提供者關聯的 ImageReader 實作的實例。返回的物件初始時處於初始狀態,好像調用過其 reset 方法。

預設實作只返回 createReaderInstance(null)

返回:
一個 ImageReader 實例。
拋出:
IOException - 如果載入或初始化 reader 類別時發生錯誤,或在初始化或實例化 reader 物件時發生錯誤。

createReaderInstance

public abstract ImageReader createReaderInstance(Object extension)
                                          throws IOException
返回與此服務提供者關聯的 ImageReader 實作的實例。返回的物件初始時處於初始狀態,好像調用過其 reset 方法。

可以在建構時向外掛程式提供 Object。物件的本質完全由外掛程式決定。

通常情況下,外掛程式將使用類似 return new MyImageReader(this) 的程式碼實作此方法。

參數:
extension - 特定於外掛程式的擴展物件,它可以為 null
返回:
一個 ImageReader 實例。
拋出:
IOException - 如果實例化此 reader 的嘗試失敗。
IllegalArgumentException - 如果 ImageReader 建構子拋出一個 IllegalArgumentException,以指示此擴展物件不適合在這裡使用。

isOwnReader

public boolean isOwnReader(ImageReader reader)
如果傳入的 ImageReader 物件為與此服務提供者關聯的 ImageReader 的實例,則返回 true

預設的實作將 reader 參數的完全限定類別名與傳給建構子的類別名進行比較。如果需要更複雜的檢查,可覆寫此方法。

參數:
reader - 一個 ImageReader 實例。
返回:
如果 reader 可識別,則返回 true
拋出:
IllegalArgumentException - 如果 readernull

getImageWriterSpiNames

public String[] getImageWriterSpiNames()
返回一個 String 陣列,其包含所有能夠理解由與此服務提供者關聯的 ImageReader 使用的內部元資料表示形式的 ImageWriterSpi 類別的完全限定名。或者如果沒有指定這樣的 ImageWriter,則返回 null。如果返回了非 null 的值,則其長度一定不為零。

陣列中的第一項必須是“首選”writer 的服務提供者的名稱,因為它將用於實例化由 ImageIO.getImageWriter(ImageReader) 返回的 ImageWriter

使用此機制可獲取將能夠理解由 ImageReader 產生的非像素元資料的內部結構(請參見 IIOTreeInfo)的 ImageWriters。通過從 ImageReader 獲取此資料並將其傳給使用此方法獲取的 ImageWriters 之一,客戶端程序可讀取圖像、進行某些修改並寫回圖像,同時保留所有的元資料,而不需要理解有關此元資料的任何事情,甚至圖像的格式都不需知道。

返回:
包含 ImageWriterSpi 名稱的長度至少為 1 的 String 陣列,或者返回 null
另請參見:
ImageIO.getImageWriter(ImageReader)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only