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

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

サービスに関連した形式名、ファイル接尾辞、および MIME タイプのリストは、それぞれ getFormatNamesgetFileSuffixes、および getMIMETypes メソッドで取得できます。これらのメソッドは、手動の形式選択、ファイルの命名、または 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
          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()
          このサービスプロバイダに関連する ImageWriter が使用する内部メタデータ表現を認識可能な ImageReaderSpi クラスのすべての完全指定名を含む String 配列を返します。
 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
 
クラス 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 - ベンダー名 (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 - vendorNamenull の場合
IllegalArgumentException - versionnull の場合
IllegalArgumentException - namesnull または長さ 0 の場合
IllegalArgumentException - writerClassNamenull の場合
IllegalArgumentException - outputTypesnull または長さ 0 の場合
メソッドの詳細

isFormatLossless

public boolean isFormatLossless()
このライターが出力する形式がピクセルデータをビット精度で保持する場合は true を返します。デフォルトの実装では true を返します。

戻り値:
形式が完全な精度でピクセルを 保持する場合は true

getOutputTypes

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

ImageOutputStream にのみ出力するほとんどのライターの場合、ImageOutputStream.class を含む単一要素の配列が返されます。

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

canEncodeImage

public abstract boolean canEncodeImage(ImageTypeSpecifier type)
このサービスプロバイダに関連する ImageWriter 実装が、指定されたレイアウトでイメージをエンコードできる場合は、true を返します。レイアウト (つまりイメージの SampleModelColorModel) は ImageTypeSpecifier オブジェクトで記述されます。  

true が返されても、エンコーディングが成功するとは限りません。エンコーディング処理で、入出力エラー、不整合または不正なデータ構造などによりエラーが発生する場合があります。この目的は、イメージがエンコーディング形式のスコープ内であるかどうかを判定するために、イメージの基本構造を適切に検証することです。たとえば、グレースケールのみをエンコ−ド可能な形式用のサービスプロバイダは、RGB BufferedImage が渡されると false を返します。同様に、8 ビット RGB イメージをエンコードできるサービスプロバイダは、関連するアルファチャネルを持つイメージをエンコードしない場合があります。  

ImageWriter (サービスプロバイダ) の中には、多少厳格なものがあります。たとえば、格納するためにある程度精度を低下させて各ピクセルを除算する必要があっても、事前にアルファを乗算したイメージを受け取る場合があります。

パラメータ:
type - 書き込まれるイメージのレイアウトを指定する ImageTypeSpecifier
戻り値:
このライターが指定されたレイアウトでイメージを エンコードできる可能性が高い場合は true
例外:
IllegalArgumentException - typenull の場合

canEncodeImage

public boolean canEncodeImage(RenderedImage im)
このサービスプロバイダに関連する ImageWriter 実装が、指定された RenderedImage インスタンスをエンコードできる場合は、true を返します。これには java.awt.image.BufferedImage のインスタンスが含まれます。  

このメソッドのセマンティクスの詳細は、canEncodeImage(ImageTypeSpecifier) の説明を参照してください。

パラメータ:
im - エンコードされる RenderedImage のインスタンス
戻り値:
このライターがこのイメージをエンコードできる可能性が 高い場合は true
例外:
IllegalArgumentException - imnull の場合

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 - writernull の場合

getImageReaderSpiNames

public String[] getImageReaderSpiNames()
このサービスプロバイダに関連する ImageWriter が使用する内部メタデータ表現を認識可能な ImageReaderSpi クラスのすべての完全指定名を含む String 配列を返します。この種の ImageReader が指定されていない場合は null を返します。null 以外の値が返される場合は、0 以外の長さになります。  

配列の最初の項目は、ImageIO.getImageReader(ImageWriter) から返される ImageReader のインスタンス化で使用されるため、「優先される」リーダーのサービスプロバイダ名である必要があります。  

この機構は、ImageWriter が認識する構造内でピクセル以外のメタデータ (IIOExtraDataInfo を参照) を生成する ImageReader の取得に使用できます。イメージを読み込み、このメソッドで取得したいずれかの ImageReader からこのデータを取得し、それを ImageWriter に渡すと、クライアントプログラムですべてのメタデータを保持しつつ、イメージの読み込みや変更、書き戻しを行うことができ、メタデータの内部構造やイメージ形式でさえ何も意識する必要はありません。

戻り値:
ImageReaderSpi の名前を含む 長さ 1 以上の String の配列、 または null
関連項目:
ImageIO.getImageReader(ImageWriter), ImageReaderSpi.getImageWriterSpiNames()

JavaTM Platform
Standard Ed. 6

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

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