- すべての実装されたインタフェース:
RegisterableService
public abstract class ImageWriterSpi extends ImageReaderWriterSpi
ImageWriter
のサービス・プロバイダ・インタフェース(SPI)です。 サービス・プロバイダ・クラスの詳細は、IIORegistry
クラスのクラス・コメントを参照してください。
各ImageWriterSpi
は、関連するImageWriter
クラスに関する複数の情報タイプを提供します。
SPIクラスを定義するベンダー名とクラスの簡潔な説明は、getVendorName
、getDescription
、およびgetVersion
メソッドで取得できます。 これらのメソッドは、国際化してロケール固有の出力を行うことが可能です。 これらのメソッドの主な目的は、ポップアップ・メニューやほかのリストを編成するのに使用可能で、簡潔かつ人が書込み可能な情報を提供することです。
サービスに関連する形式名、ファイル接尾辞、およびMIMEタイプのリストは、それぞれgetFormatNames
、getFileSuffixes
、およびgetMIMEType
メソッドで取得できます。 これらのメソッドは、手動の形式選択、ファイルの命名、またはMIME関連付けに基づき、特定のファイルまたはストリームに書き込むための候補となるImageWriter
の識別に使用することができます。
特定のデータ・ストリームを構文解析できる可能性の高いImageWriter
を判定するための、より信頼性の高い手段がcanEncodeImage
メソッドに用意されています。 サービス・プロバイダは、このメソッドを使用して実際のイメージ内容を検証できます。
このサービス・プロバイダに関連するImageWriter
クラスのインスタンスは、createWriterInstance
メソッドを呼び出すことで取得できます。 ネイティブ・ライブラリのロードや大規模な表作成などの負荷の高い初期化は、少なくともこのメソッドが最初に呼び出されるまで延期する必要があります。
- 関連項目:
IIORegistry
,ImageTypeSpecifier
,ImageWriter
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 protected Class<?>[]
outputTypes
getOutputTypes
から返されるClass
オブジェクトの配列で、最初はnull
です。protected String[]
readerSpiNames
getImageReaderSpiNames
から返される文字列の配列で、最初はnull
です。static Class<?>[]
STANDARD_OUTPUT_TYPE
非推奨。このフィールドを使用する代わりに、同等の配列{ ImageOutputStream.class }
を直接作成してください。クラス javax.imageio.spi.ImageReaderWriterSpiで宣言されたフィールド
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 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
を構築します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 boolean
canEncodeImage(RenderedImage im)
このサービス・プロバイダに関連するImageWriter
実装が、指定されたRenderedImage
インスタンスをエンコードできる場合は、true
を返します。abstract boolean
canEncodeImage(ImageTypeSpecifier type)
このサービス・プロバイダに関連するImageWriter
実装が、指定されたレイアウトでイメージをエンコードできる場合は、true
を返します。ImageWriter
createWriterInstance()
このサービス・プロバイダに関連するImageWriter
実装のインスタンスを返します。abstract ImageWriter
createWriterInstance(Object extension)
このサービス・プロバイダに関連するImageWriter
実装のインスタンスを返します。String[]
getImageReaderSpiNames()
このサービス・プロバイダに関連するImageWriter
が使用する内部メタデータ表現を認識可能なImageReaderSpi
クラスのすべての完全修飾名を含むString
配列を返します。この種のImageReaders
が指定されていない場合はnull
を返します。Class<?>[]
getOutputTypes()
ライターのsetOutput
メソッドの引数に使用可能なオブジェクトの型を示すClass
オブジェクトの配列を返します。boolean
isFormatLossless()
このライターが出力する形式がピクセル・データをビット精度で保持する場合は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
-
フィールド詳細
-
STANDARD_OUTPUT_TYPE
@Deprecated public static final Class<?>[] STANDARD_OUTPUT_TYPE非推奨。このフィールドを使用する代わりに、同等の配列{ ImageOutputStream.class }
を直接作成してください。getOutputTypes
から返される単一要素の配列で、最初はImageOutputStream.class
が格納されています。 -
outputTypes
protected クラス<?>[] outputTypesgetOutputTypes
から返されるClass
オブジェクトの配列で、最初はnull
です。 -
readerSpiNames
protected String[] readerSpiNamesgetImageReaderSpiNames
から返される文字列の配列で、最初は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
- ベンダー名(null
以外のString
)。version
- バージョン識別子(null
以外のString
)。names
- 形式名を示すnull
以外のString
配列。 1つ以上のエントリが存在する必要がある。suffixes
- 共通のファイル接尾辞を示すString
配列。 接尾辞が定義されていない場合は、null
を指定する。 長さ0の配列はnull
に正規化される。MIMETypes
- 形式のMIMEタイプを示すString
配列。 接尾辞が定義されていない場合は、null
を指定する。 長さ0の配列はnull
に正規化される。writerClassName
- 関連付けられたImageWriterSpi
クラスの完全修飾名(null以外のString
)。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
-vendorName
がnull
の場合。IllegalArgumentException
-version
がnull
の場合。IllegalArgumentException
-names
がnull
または長さ0の場合。IllegalArgumentException
-writerClassName
がnull
の場合。IllegalArgumentException
-outputTypes
がnull
または長さ0の場合。
-
-
メソッドの詳細
-
isFormatLossless
public boolean isFormatLossless()このライターが出力する形式がピクセル・データをビット精度で保持する場合はtrue
を返します。 デフォルトの実装ではtrue
を返します。- 戻り値:
- 形式が完全な精度でピクセルを保持する場合は
true
。
-
getOutputTypes
public クラス<?>[] getOutputTypes()ライターのsetOutput
メソッドの引数に使用可能なオブジェクトの型を示すClass
オブジェクトの配列を返します。ImageOutputStream
にのみ出力するほとんどのライターの場合、ImageOutputStream.class
を含む単一要素の配列が返されます。- 戻り値:
- 長さ1以上の
Class
オブジェクトの、null
以外の配列。
-
canEncodeImage
public abstract boolean canEncodeImage(ImageTypeSpecifier type)このサービス・プロバイダに関連するImageWriter
実装が、指定されたレイアウトでイメージをエンコードできる場合は、true
を返します。 レイアウト(つまりイメージのSampleModel
とColorModel
)はImageTypeSpecifier
オブジェクトで記述されます。true
が返されても、エンコーディングが成功するとは限りません。エンコーディング処理で、入出力エラー、不整合または不正なデータ構造などによりエラーが発生する場合があります。この目的は、イメージがエンコーディング形式のスコープ内であるかどうかを判定するために、イメージの基本構造を適切に検証することです。 たとえば、グレー・スケールのみをエンコード可能な形式用のサービス・プロバイダは、RGBBufferedImage
が渡されるとfalse
を返します。 同様に、8ビットRGBイメージをエンコードできるサービス・プロバイダは、関連するアルファ・チャネルを持つイメージをエンコードしない場合があります。ImageWriter
(サービス・プロバイダ)の中には、多少厳格なものがあります。 たとえば、格納するためにある程度精度を低下させて各ピクセルを除算する必要があっても、事前にアルファを乗算したイメージを受け取る場合があります。- パラメータ:
type
- 書き込まれるイメージのレイアウトを指定するImageTypeSpecifier
。- 戻り値:
- このライターが指定されたレイアウトでイメージをエンコードできる可能性が高い場合は
true
。 - 例外:
IllegalArgumentException
-type
がnull
の場合。
-
canEncodeImage
public boolean canEncodeImage(RenderedImage im)このサービス・プロバイダに関連するImageWriter
実装が、指定されたRenderedImage
インスタンスをエンコードできる場合は、true
を返します。 これにはjava.awt.image.BufferedImage
のインスタンスが含まれます。このメソッドのセマンティックスの詳細は、
canEncodeImage(ImageTypeSpecifier)
の説明を参照してください。- パラメータ:
im
- エンコードされるRenderedImage
のインスタンス。- 戻り値:
- このライターがこのイメージをエンコードできる可能性が高い場合は
true
。 - 例外:
IllegalArgumentException
-im
がnull
の場合。
-
createWriterInstance
public ImageWriter createWriterInstance() throws IOExceptionこのサービス・プロバイダに関連するImageWriter
実装のインスタンスを返します。 返されるオブジェクトの初期状態は、reset
メソッドの呼出し後のような状態です。デフォルトの実装では、
createWriterInstance(null)
を返すだけです。- 戻り値:
ImageWriter
インスタンス。- 例外:
IOException
- ライター・クラスのロードや初期化、またはライター・オブジェクトのインスタンス化や初期化でエラーが発生した場合。
-
createWriterInstance
public abstract ImageWriter createWriterInstance(Object extension) throws IOExceptionこのサービス・プロバイダに関連するImageWriter
実装のインスタンスを返します。 返されるオブジェクトの初期状態は、reset
メソッドの呼出し後のような状態です。構築時に
Object
をプラグインに提供できます。 オブジェクトの特性は、プラグインによって異なります。通常、プラグインは
return new MyImageWriter(this)
などのコードを使用してこのメソッドを実装します。- パラメータ:
extension
- プラグイン固有の拡張オブジェクト。null
も可。- 戻り値:
ImageWriter
インスタンス。- 例外:
IOException
- ライターのインスタンス化に失敗した場合。IllegalArgumentException
- 拡張オブジェクトが適切でないことを示すためにImageWriter
のコンストラクタがIllegalArgumentException
をスローする場合。
-
isOwnWriter
public boolean isOwnWriter(ImageWriter writer)渡されたImageWriter
オブジェクトがこのサービス・プロバイダに関連するImageWriter
のインスタンスの場合は、true
を返します。- パラメータ:
writer
-ImageWriter
インスタンス。- 戻り値:
writer
が認識される場合はtrue
- 例外:
IllegalArgumentException
-writer
がnull
の場合。
-
getImageReaderSpiNames
public String[] getImageReaderSpiNames()このサービス・プロバイダに関連するImageWriter
が使用する内部メタデータ表現を認識可能なImageReaderSpi
クラスのすべての完全修飾名を含むString
配列を返します。この種のImageReaders
が指定されていない場合はnull
を返します。null
以外の値が返される場合は、0以外の長さになります。配列の最初の項目は、
ImageIO.getImageReader(ImageWriter)
から返されるImageReader
のインスタンス化で使用されるため、「優先される」リーダーのサービス・プロバイダ名である必要があります。このメカニズムは、
ImageWriter
が認識する構造内でピクセル以外のメタデータ(IIOExtraDataInfo
を参照)を生成するImageReaders
の取得に使用できます。 イメージを読み込み、このメソッドで取得したいずれかのImageReaders
からこのデータを取得し、それをImageWriter
に渡すと、クライアント・プログラムですべてのメタデータを保持しつつ、イメージの読込みや変更、書戻しを行うことができ、メタデータの内部構造やイメージ形式でさえ何も意識する必要はありません。- 戻り値:
ImageReaderSpi
の名前を含む長さ1以上のString
の配列、またはnull
。- 関連項目:
ImageIO.getImageReader(ImageWriter)
,ImageReaderSpi.getImageWriterSpiNames()
-