JavaTM 2 Platform
Standard Ed. 5.0

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 クラスに関する複数の情報タイプを提供します。

SPI クラスを定義したベンダ名とクラスの簡潔な説明は、getVendorNamegetDescription、および getVersion メソッドで取得できます。これらのメソッドは、国際化してロケール固有の出力を行うことが可能です。これらのメソッドの主な目的は、ポップアップメニューなどのリスト編成に使用可能で、簡潔かつ判読可能な情報を提供することです。

サービスに関連する形式名、ファイル接尾辞、および MIME タイプのリストは、それぞれ getFormatNamesgetFileSuffixes、および getMIMETypes メソッドで取得できます。これらのメソッドは、手動の形式選択、ファイルの命名、または MIME 関連付け (たとえば、HTTP 経由または電子メール添付のファイルアクセス) に基づき特定のファイルまたはストリームをデコードする際、候補となる ImageReader の識別に使用できます。

特定のデータストリームを構文解析できる可能性の高い ImageReader を判定するための、より信頼性の高い手段が canDecodeInput メソッドに用意されています。サービスプロバイダは、このメソッドを使用して実際のストリーム内容を検証できます。

このサービスプロバイダに関連する ImageReader クラスのインスタンスは、createReaderInstance メソッドを呼び出すことで取得できます。ネイティブライブラリのロードや大規模なテーブル作成などの負荷の高い初期化は、少なくともこのメソッドが最初に呼び出されるまで延期する必要があります。

関連項目:
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)
          指定されたソースオブジェクトがこのリーダでサポートされる形式であると見なされる場合に 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 を返します。
 
クラス 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 - ベンダー名 (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 - vendorNamenull の場合
IllegalArgumentException - versionnull の場合
IllegalArgumentException - namesnull または長さ 0 の場合
IllegalArgumentException - readerClassNamenull の場合
IllegalArgumentException - inputTypesnull または長さ 0 の場合
メソッドの詳細

getInputTypes

public Class[] getInputTypes()
リーダの setInput メソッドの引数に使用可能なオブジェクトの型を示す Class オブジェクトの配列を返します。

ImageInputStream からの入力を受け取るだけの大半のリーダの場合、ImageInputStream.class を含む単一要素の配列が返されます。

戻り値:
長さ 1 以上の Class オブジェクトの、null 以外の配列

canDecodeInput

public abstract boolean canDecodeInput(Object source)
                                throws IOException
指定されたソースオブジェクトがこのリーダでサポートされる形式であると見なされる場合に true を返します。このメソッドから true が返されても読み込みに成功することは保証されず、ストリーム内容の簡潔な検証に基づき成功の可能性がかなり高いと見なされたにすぎません。ソースが ImageInputStream の場合、実装は一般的にストリームの最初の数バイトをチェックして、この形式に関連付けられた「マジック番号」を確認します。実際の読み込みが開始されても、デコーディングが完了するまでいつでもリーダは失敗する可能性があります。

他の ImageReaderSpi がオブジェクトをデコードできるかどうか適切に判定できるように、オブジェクトの状態を妨げないことが重要です。特に、ソースが ImageInputStream の場合、mark/reset のペアを使用してストリーム位置を保持する必要があります。

ほとんどすべてのストリームの読み込みを試みる可能性のある「raw」などの形式では、より適切なものよりも優先して呼び出されるのを避けるために、false を返す必要があります。

sourcegetInputTypes から返されたクラスのいずれでもない場合、このメソッドは false を返すだけです。

パラメータ:
source - デコードされるオブジェクト。通常は ImageInputStream
戻り値:
このストリームをデコード可能な場合は true
例外:
IllegalArgumentException - sourcenull の場合
IOException - ストリームの読み込み中に入出力エラーが発生した場合

createReaderInstance

public ImageReader createReaderInstance()
                                 throws IOException
このサービスプロバイダに関連する ImageReader 実装のインスタンスを返します。返されるオブジェクトの初期状態は、reset メソッドの呼び出し後のような状態です。

デフォルトの実装では、createReaderInstance(null) を返すだけです。

戻り値:
ImageReader インスタンス
例外:
IOException - リーダクラスのロードや初期化、またはリーダオブジェクトのインスタンス化や初期化でエラーが発生した場合

createReaderInstance

public abstract ImageReader createReaderInstance(Object extension)
                                          throws IOException
このサービスプロバイダに関連する ImageReader 実装のインスタンスを返します。返されるオブジェクトの初期状態は、reset メソッドの呼び出し後のような状態です。

構築時に Object をプラグインに提供できます。オブジェクトの特性は、プラグインによって異なります。

通常、プラグインは return new MyImageReader(this) などのコードを使用してこのメソッドを実装します。

パラメータ:
extension - プラグイン固有の拡張オブジェクト。null も可
戻り値:
ImageReader インスタンス
例外:
IOException - リーダのインスタンス化に失敗した場合
IllegalArgumentException - 拡張オブジェクトが適切でないことを示すために ImageReader のコンストラクタが IllegalArgumentException をスローする場合

isOwnReader

public boolean isOwnReader(ImageReader reader)
渡された ImageReader オブジェクトがこのサービスプロバイダに関連する ImageReader のインスタンスの場合は、true を返します。

デフォルトの実装では、引数 reader の完全指定クラス名とコンストラクタに渡されたクラス名を比較します。さらに高度なチェックが必要な場合は、このメソッドをオーバーライドできます。

パラメータ:
reader - ImageReader インスタンス
戻り値:
reader が認識される場合は true
例外:
IllegalArgumentException - readernull の場合

getImageWriterSpiNames

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)

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。