public abstract class ImageReaderSpi extends ImageReaderWriterSpi
ImageReader
のサービスプロバイダインタフェース (SPI) です。サービスプロバイダクラスの詳細は、IIORegistry
クラスのクラスコメントを参照してください。
各 ImageReaderSpi
は、関連する ImageReader
クラスに関する複数の情報タイプを提供します。
SPI クラスを定義するベンダー名とクラスの簡潔な説明は、getVendorName
、getDescription
、および getVersion
メソッドで取得できます。これらのメソッドは、国際化してロケール固有の出力を行うことが可能です。これらのメソッドの主な目的は、ポップアップメニューなどのリスト編成に使用可能で、簡潔かつ判読可能な情報を提供することです。
サービスに関連する形式名、ファイル接尾辞、および MIME タイプのリストは、それぞれ getFormatNames
、getFileSuffixes
、および getMIMETypes
メソッドで取得できます。これらのメソッドは、手動の形式選択、ファイルの命名、または MIME 関連付け (たとえば、HTTP 経由または電子メール添付のファイルアクセス) に基づき特定のファイルまたはストリームをデコードする際、候補となる ImageReader
の識別に使用できます。
特定のデータストリームを構文解析できる可能性の高い ImageReader
を判定するための、より信頼性の高い手段が canDecodeInput
メソッドに用意されています。サービスプロバイダは、このメソッドを使用して実際のストリーム内容を検証できます。
このサービスプロバイダに関連する ImageReader
クラスのインスタンスは、createReaderInstance
メソッドを呼び出すことで取得できます。ネイティブライブラリのロードや大規模なテーブル作成などの負荷の高い初期化は、少なくともこのメソッドが最初に呼び出されるまで延期する必要があります。
IIORegistry
, ImageReader
修飾子と型 | フィールドと説明 |
---|---|
protected Class[] |
inputTypes
getInputTypes から返される Class オブジェクトの配列で、最初は null です。 |
static Class[] |
STANDARD_INPUT_TYPE
非推奨。
このフィールドを使用する代わりに、同等の配列
{ ImageInputStream.class } を直接作成してください。 |
protected String[] |
writerSpiNames
getImageWriterSpiNames から返される文字列の配列で、最初は null です。 |
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
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)
指定されたソースオブジェクトがこのリーダーでサポートされる形式であると見なされる場合に
true を返します。 |
ImageReader |
createReaderInstance()
このサービスプロバイダに関連する
ImageReader 実装のインスタンスを返します。 |
abstract ImageReader |
createReaderInstance(Object extension)
このサービスプロバイダに関連する
ImageReader 実装のインスタンスを返します。 |
String[] |
getImageWriterSpiNames()
このサービスプロバイダに関連する
ImageReader が使用する内部メタデータ表現を認識可能な ImageWriterSpi クラスすべての完全修飾名を含む String 配列を返します。この種の ImageWriter が指定されていない場合は null を返します。 |
Class[] |
getInputTypes()
リーダーの
setInput メソッドの引数に使用可能なオブジェクトの型を示す Class オブジェクトの配列を返します。 |
boolean |
isOwnReader(ImageReader reader)
渡された
ImageReader オブジェクトがこのサービスプロバイダに関連する ImageReader のインスタンスの場合は、true を返します。 |
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
getDescription, getVendorName, getVersion, onDeregistration, onRegistration
@Deprecated public static final Class[] STANDARD_INPUT_TYPE
{ ImageInputStream.class }
を直接作成してください。getInputTypes
から返される単一要素の配列で、最初は ImageInputStream.class
が格納されています。protected Class[] inputTypes
getInputTypes
から返される Class
オブジェクトの配列で、最初は null
です。protected String[] writerSpiNames
getImageWriterSpiNames
から返される文字列の配列で、最初は null
です。protected 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
- ベンダー名 (null
以外の String
)。version
- バージョン識別子 (null
以外の String
)。names
- 形式名を示す null
以外の String
配列。1 つ以上のエントリが存在する必要がある。suffixes
- 共通のファイル接尾辞を示す String
配列。接尾辞が定義されていない場合は、null
を指定する。長さ 0 の配列は null
に正規化される。MIMETypes
- 形式の MIME タイプを示す String
配列。MIME タイプが定義されていない場合は、null
を指定する。長さ 0 の配列は null
に正規化される。readerClassName
- 関連付けられた ImageReader
クラスの完全修飾名 (null
以外の String
)。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
- vendorName
が null
の場合。IllegalArgumentException
- version
が null
の場合。IllegalArgumentException
- names
が null
または長さ 0 の場合。IllegalArgumentException
- readerClassName
が null
の場合。IllegalArgumentException
- inputTypes
が null
または長さ 0 の場合。public Class[] getInputTypes()
setInput
メソッドの引数に使用可能なオブジェクトの型を示す Class
オブジェクトの配列を返します。
ImageInputStream
からの入力を受け取るだけの大半のリーダーの場合、ImageInputStream.class
を含む単一要素の配列が返されます。
Class
オブジェクトの、null
以外の配列。public abstract boolean canDecodeInput(Object source) throws IOException
true
を返します。このメソッドから true
が返されても読み込みに成功することは保証されず、ストリーム内容の簡潔な検証に基づき成功の可能性がかなり高いと見なされたにすぎません。ソースが ImageInputStream
の場合、実装は一般的にストリームの最初の数バイトをチェックして、この形式に関連付けられた「マジック番号」を確認します。実際の読み込みが開始されても、デコーディングが完了するまでいつでもリーダーは失敗する可能性があります。
ほかの ImageReaderSpi
がオブジェクトをデコードできるかどうか適切に判定できるように、オブジェクトの状態を妨げないことが重要です。特に、ソースが ImageInputStream
の場合、mark
/reset
のペアを使用してストリーム位置を保持する必要があります。
ほとんどすべてのストリームの読み込みを試みる可能性のある「raw」などの形式では、より適切なものよりも優先して呼び出されるのを避けるために、false
を返す必要があります。
source
が getInputTypes
から返されたクラスのいずれでもない場合、このメソッドは false
を返すだけです。
source
- デコードされるオブジェクト。通常は ImageInputStream
。true
。IllegalArgumentException
- source
が null
の場合。IOException
- ストリームの読み取り中に入出力エラーが発生した場合。public ImageReader createReaderInstance() throws IOException
ImageReader
実装のインスタンスを返します。返されるオブジェクトの初期状態は、reset
メソッドの呼び出し後のような状態です。
デフォルトの実装では、createReaderInstance(null)
を返すだけです。
ImageReader
インスタンス。IOException
- リーダークラスのロードや初期化、またはリーダーオブジェクトのインスタンス化や初期化でエラーが発生した場合。public abstract ImageReader createReaderInstance(Object extension) throws IOException
ImageReader
実装のインスタンスを返します。返されるオブジェクトの初期状態は、reset
メソッドの呼び出し後のような状態です。
構築時に Object
をプラグインに提供できます。オブジェクトの特性は、プラグインによって異なります。
通常、プラグインは return new MyImageReader(this)
などのコードを使用してこのメソッドを実装します。
extension
- プラグイン固有の拡張オブジェクト。null
も可。ImageReader
インスタンス。IOException
- リーダーのインスタンス化に失敗した場合。IllegalArgumentException
- 拡張オブジェクトが適切でないことを示すために ImageReader
のコンストラクタが IllegalArgumentException
をスローする場合。public boolean isOwnReader(ImageReader reader)
ImageReader
オブジェクトがこのサービスプロバイダに関連する ImageReader
のインスタンスの場合は、true
を返します。
デフォルトの実装では、引数 reader
の完全指定クラス名とコンストラクタに渡されたクラス名を比較します。さらに高度なチェックが必要な場合は、このメソッドをオーバーライドできます。
reader
- ImageReader
インスタンス。reader
が認識される場合は true
。IllegalArgumentException
- reader
が null
の場合。public String[] getImageWriterSpiNames()
ImageReader
が使用する内部メタデータ表現を認識可能な ImageWriterSpi
クラスすべての完全修飾名を含む String
配列を返します。この種の ImageWriter
が指定されていない場合は null
を返します。null
以外の値が返される場合は、0 以外の長さになります。
配列の最初の項目は、ImageIO.getImageWriter(ImageReader)
から返される ImageWriter
のインスタンス化で使用されるため、「優先される」ライターのサービスプロバイダ名である必要があります。
このメカニズムは、ImageReader
で生成されたピクセル以外のメタデータ (IIOTreeInfo
を参照) の内部構造を認識する ImageWriters
の取得に使用できます。ImageReader
からこのデータを取得して、このメソッドで取得したいずれかの ImageWriters
に渡すと、クライアントプログラムで、すべてのメタデータを保持しつつ、イメージの読み込みや変更、書き戻しを行うことができ、メタデータの内部構造やイメージ形式でさえ何も意識する必要はありません。
ImageWriterSpi
の名前を含む長さ 1 以上の String
の配列、または null
。ImageIO.getImageWriter(ImageReader)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.