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 } を直接作成してください。 |
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
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()
このサービス・プロバイダに関連する
ImageWriter が使用する内部メタデータ表現を認識可能なImageReaderSpi クラスのすべての完全修飾名を含むString 配列を返します。この種のImageReaders が指定されていない場合はnull を返します。 |
Class[] |
getOutputTypes()
ライターの
setOutput メソッドの引数に使用可能なオブジェクトの型を示すClass オブジェクトの配列を返します。 |
boolean |
isFormatLossless()
このライターが出力する形式がピクセル・データをビット精度で保持する場合は
true を返します。 |
boolean |
isOwnWriter(ImageWriter writer)
渡された
ImageWriter オブジェクトがこのサービス・プロバイダに関連するImageWriter のインスタンスの場合は、true を返します。 |
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
getDescription, getVendorName, getVersion, onDeregistration, onRegistration
@Deprecated public static final Class[] STANDARD_OUTPUT_TYPE
{ ImageOutputStream.class }
を直接作成してください。getOutputTypes
から返される単一要素の配列で、最初はImageOutputStream.class
が格納されています。protected Class[] outputTypes
getOutputTypes
から返されるClass
オブジェクトの配列で、最初はnull
です。protected String[] readerSpiNames
getImageReaderSpiNames
から返される文字列の配列で、最初はnull
です。protected 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の場合。public boolean isFormatLossless()
true
を返します。デフォルトの実装ではtrue
を返します。true
。public Class[] getOutputTypes()
setOutput
メソッドの引数に使用可能なオブジェクトの型を示すClass
オブジェクトの配列を返します。
ImageOutputStream
にのみ出力するほとんどのライターの場合、ImageOutputStream.class
を含む単一要素の配列が返されます。
Class
オブジェクトの、null
以外の配列。public abstract boolean canEncodeImage(ImageTypeSpecifier type)
ImageWriter
実装が、指定されたレイアウトでイメージをエンコードできる場合は、true
を返します。レイアウト(つまりイメージのSampleModel
とColorModel
)はImageTypeSpecifier
オブジェクトで記述されます。
true
が返されても、エンコーディングが成功するとは限りません。エンコーディング処理で、入出力エラー、不整合または不正なデータ構造などによりエラーが発生する場合があります。この目的は、イメージがエンコーディング形式のスコープ内であるかどうかを判定するために、イメージの基本構造を適切に検証することです。たとえば、グレー・スケールのみをエンコード可能な形式用のサービス・プロバイダは、RGB BufferedImage
が渡されるとfalse
を返します。同様に、8ビットRGBイメージをエンコードできるサービス・プロバイダは、関連するアルファ・チャネルを持つイメージをエンコードしない場合があります。
ImageWriter
(サービス・プロバイダ)の中には、多少厳格なものがあります。たとえば、格納するためにある程度精度を低下させて各ピクセルを除算する必要があっても、事前にアルファを乗算したイメージを受け取る場合があります。
type
- 書き込まれるイメージのレイアウトを指定するImageTypeSpecifier
。true
。IllegalArgumentException
- type
がnull
の場合。public boolean canEncodeImage(RenderedImage im)
ImageWriter
実装が、指定されたRenderedImage
インスタンスをエンコードできる場合は、true
を返します。これにはjava.awt.image.BufferedImage
のインスタンスが含まれます。
このメソッドのセマンティックスの詳細は、canEncodeImage(ImageTypeSpecifier)
の説明を参照してください。
im
- エンコードされるRenderedImage
のインスタンス。true
。IllegalArgumentException
- im
がnull
の場合。public ImageWriter createWriterInstance() throws IOException
ImageWriter
実装のインスタンスを返します。返されるオブジェクトの初期状態は、reset
メソッドの呼出し後のような状態です。
デフォルトの実装では、createWriterInstance(null)
を返すだけです。
ImageWriter
インスタンス。IOException
- ライター・クラスのロードや初期化、またはライター・オブジェクトのインスタンス化や初期化でエラーが発生した場合。public abstract ImageWriter createWriterInstance(Object extension) throws IOException
ImageWriter
実装のインスタンスを返します。返されるオブジェクトの初期状態は、reset
メソッドの呼出し後のような状態です。
構築時にObject
をプラグインに提供できます。オブジェクトの特性は、プラグインによって異なります。
通常、プラグインはreturn new MyImageWriter(this)
などのコードを使用してこのメソッドを実装します。
extension
- プラグイン固有の拡張オブジェクト。null
も可。ImageWriter
インスタンス。IOException
- ライターのインスタンス化に失敗した場合。IllegalArgumentException
- 拡張オブジェクトが適切でないことを示すためにImageWriter
のコンストラクタがIllegalArgumentException
をスローする場合。public boolean isOwnWriter(ImageWriter writer)
ImageWriter
オブジェクトがこのサービス・プロバイダに関連するImageWriter
のインスタンスの場合は、true
を返します。writer
- ImageWriter
インスタンス。writer
が認識される場合はtrue
IllegalArgumentException
- writer
がnull
の場合。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()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.