JavaTM 2 Platform
Standard Ed. 6

javax.imageio.spi
類別 ImageWriterSpi

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

public abstract class ImageWriterSpi
extends ImageReaderWriterSpi

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

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

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

使用 getFormatNamesgetFileSuffixesgetMIMEType 方法可獲得與服務有關聯的格式名稱、檔案後綴和 MIME 型別的列表。使用這些方法可識別候選 ImageWriter,從而基於手動格式選擇、檔案命名或 MIME 關聯寫入特定檔案或串流。

canEncodeImage 方法提供了確定最有可能解析特定資料串流的 ImageWriter 的更可靠途徑。此方法允許服務提供者檢查實際的圖像內容。

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

另請參見:
IIORegistry, ImageTypeSpecifier, ImageWriter

欄位摘要
protected  Class[] outputTypes
          將從 getOutputTypes 返回的 Class 物件的陣列,該陣列最初為 null
protected  String[] readerSpiNames
          將從 getImageReaderSpiNames 返回的字元串陣列,該陣列最初為 null
static Class[] STANDARD_OUTPUT_TYPE
          從 getInputTypes 返回的單元素陣列,該陣列最初包含 ImageInputStream.class
 
從類別 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 ImageWriterSpi()
          建構一個空的 ImageWriterSpi
  ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, Class[] outputTypes, String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
          用給定的一組值建構 ImageWriterSpi
 
方法摘要
abstract  boolean canEncodeImage(ImageTypeSpecifier type)
          如果與此服務提供者關聯的 ImageWriter 實作能夠使用給定的佈局編碼圖像,則返回 true
 boolean canEncodeImage(RenderedImage im)
          如果與此服務提供者關聯的 ImageWriter 實作能夠編碼給定的 RenderedImage 實例,則返回 true
 ImageWriter createWriterInstance()
          返回與此服務提供者關聯的 ImageWriter 實作的實例。
abstract  ImageWriter createWriterInstance(Object extension)
          返回與此服務提供者關聯的 ImageWriter 實作的實例。
 String[] getImageReaderSpiNames()
          返回一個 String 陣列,該陣列包含所有能夠理解由與此服務提供者關聯的 ImageWriter 使用的內部元資料表示形式的 ImageReaderSpi 類別的完全限定名。
 Class[] getOutputTypes()
          返回 Class 物件陣列,指示可用作 setOutput 方法參數的物件型別。
 boolean isFormatLossless()
          如果此 writer 輸出的格式準確保留了像素資料位,則返回 true
 boolean isOwnWriter(ImageWriter writer)
          如果傳入的 ImageWriter 物件是與此服務提供者關聯的 ImageWriter 的實例,則返回 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_OUTPUT_TYPE

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


outputTypes

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


readerSpiNames

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

建構子詳細資訊

ImageWriterSpi

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


ImageWriterSpi

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

參數:
vendorName - 供應商名稱,它是一個非 nullString
version - 版本標識符,它是一個非 nullString
names - 指示格式名稱的一個非 nullString 陣列。必須至少有一個項。
suffixes - 指示常用檔案後綴的 String 陣列。如果沒有定義後綴,則應指定為 null。長度為 0 的陣列將被標準化為 null
MIMETypes - 指示格式的 MIME 型別的 String 陣列。如果沒有定義後綴,則應指定為 null。長度為 0 的陣列將被標準化為 null
writerClassName - 所關聯的 ImageWriterSpi 類別的完全限定名,它為一個非 nullString
outputTypes - 指示合法的輸出型別的長度至少為 1 的 Class 物件的陣列。
readerSpiNames - 命名所有與 ImageReader 關聯的類別的長度至少為 1 的 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 - 如果 writerClassNamenull
IllegalArgumentException - 如果 outputTypesnull 或長度為 0。
方法詳細資訊

isFormatLossless

public boolean isFormatLossless()
如果此 writer 輸出的格式準確保留了像素資料位,則返回 true。預設實作返回 true

返回:
如果格式完全保留了像素的準確性,則返回 true

getOutputTypes

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

對於大多數只輸出到 ImageOutputStream 的 writer,應返回一個套件含 ImageOutputStream.class 的單元素陣列。

返回:
長度至少為 1 的、非 nullClass 物件陣列。

canEncodeImage

public abstract boolean canEncodeImage(ImageTypeSpecifier type)
如果與此服務提供者關聯的 ImageWriter 實作能夠使用給定的佈局編碼圖像,則返回 true。佈局( 圖像的 SampleModelColorModel)由 ImageTypeSpecifier 物件描述。

返回的值為 true 並不能絕對保證成功地編碼;編碼過程中仍有可能因為類似 I/O 錯誤、不一致或錯誤的資料結構等而產生錯誤。執行對圖像的基本結構的合理檢查是為了確定圖像是否處在編碼格式範圍內。例如,如果要求一個只能編碼灰度格式的服務提供者處理 RGB BufferedImage,將返回 false。類似地,能夠編碼 8 位 RGB 圖像格式的服務提供者可能拒絕編碼與 alpha 通道關聯的圖像。

不同的 ImageWriter 以及由此導致的不同的服務提供者,可以更嚴格或更鬆散。例如,即使為了存儲而不得不減少每個圖像的像素,從而使精度下降,也有可能接受預乘 alpha 的圖像。

參數:
type - 指定將要寫入的圖像的佈局的 ImageTypeSpecifier
返回:
如果 writer 看起來能夠按給定的佈局編碼此圖像,則返回 true
拋出:
IllegalArgumentException - 如果 typenull

canEncodeImage

public boolean canEncodeImage(RenderedImage im)
如果與此服務提供者關聯的 ImageWriter 實作能夠編碼給定的 RenderedImage 實例,則返回 true。注意,這包括 java.awt.image.BufferedImage 的實例。

有關此方法的語義資訊,請參見對 canEncodeImage(ImageTypeSpecifier) 的討論。

參數:
im - 要編碼的 RenderedImage 的實例。
返回:
如果 writer 看起來能夠編碼此圖像,則返回 true
拋出:
IllegalArgumentException - 如果 imnull

createWriterInstance

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

預設實作只返回 createWriterInstance(null)

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

createWriterInstance

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

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

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

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

isOwnWriter

public boolean isOwnWriter(ImageWriter writer)
如果傳入的 ImageWriter 物件是與此服務提供者關聯的 ImageWriter 的實例,則返回 true

參數:
writer - 一個 ImageWriter 實例。
返回:
如果 writer 可識別,則返回 true
拋出:
IllegalArgumentException - 如果 writernull

getImageReaderSpiNames

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

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

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

返回:
一個長度至少為 1 的、包含 ImageReaderSpi 名稱的 String 陣列,或者返回 null
另請參見:
ImageIO.getImageReader(ImageWriter), ImageReaderSpi.getImageWriterSpiNames()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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