public class ImageReadParam extends IIOParam
ImageReader
のインスタンスへ規定の「方法」についての情報を提供するために使用されます。
ファイルまたはストリームの一部として符号化されたイメージは、空間的な寸法の幅と高さ、バンド数、およびプログレッシブ・デコーディング・パスの数など、複数の次元に拡大して考えられます。 このクラスは、これらのすべての次元で、連続的なイメージの(ハイパー)矩形サブ領域を使用して、復号化の選択を可能にします。 さらに、空間的な寸法は非連続的に間引きできます。 最後に、色および形式の変換は、BufferedImage
を提供するか、ImageTypeSpecifier
を使用することにより、デスティネーション・イメージのColorModel
とSampleModel
を制御して指定されます。
ImageReadParam
オブジェクトは、Java Image I/Oフレームワークのコンテキストで、イメージまたはイメージのセットをストリームから入力に変換する方法を指定するために使用します。 特定のイメージ形式のプラグインは、ImageReader
実装のgetDefaultReadParam
メソッドからImageReadParam
のインスタンスを返します。
ImageReadParam
のインスタンスによって管理される状態は、復号化される特定のイメージから独立しています。 実際に復号化が行われる場合、読込みパラメータに設定された値は、ストリームから復号化中のイメージの実際のプロパティおよび復号化されたピクセル・データを受け取るデスティネーションBufferedImage
に結合されます。 たとえば、setSourceRegion
を使用して設定されたソース領域は、実際の有効なソース領域に最初に交差します。 結果は、getDestinationOffset
で返される値によって変換され、実際の有効なデスティネーション領域に交差する結果の矩形が、書き込まれるデスティネーション領域になります。
ImageReadParam
によって指定されたパラメータは、次のようにイメージに適用されます。 最初に、描画のサイズがsetSourceRenderSize
によって設定されている場合、復号化されるイメージ全体はgetSourceRenderSize
により指定されたサイズで描画されます。 それ以外の場合、イメージはImageReader.getWidth
およびImageReader.getHeight
によって指定された実際のサイズで描画されます。
次に、イメージはgetSourceXOffset
、getSourceYOffset
、getSourceWidth
、およびgetSourceHeight
によって指定されたソース領域にクリップされます。
結果の領域は、IIOParam.setSourceSubsampling
によって指定された係数によって間引きされます。 最初のピクセル、行あたりピクセル数、および行数は、すべてサブサンプリング設定に依存します。 幅w
、高さh
の結果の矩形の最小X座標とY座標(minX
、minY
)を呼び出します。
この矩形は、(getDestinationOffset().x
、getDestinationOffset().y
)にオフセットされ、デスティネーション境界にクリップされます。 デスティネーション・イメージが設定されていない場合、デスティネーションは、ソース領域のすべてのピクセルをデスティネーションに書込みできるように、幅getDestinationOffset().x
+w
、高さgetDestinationOffset().y
+h
に定義されます。
サブサンプリング後に、デスティネーション・イメージ内に配置され、getSourceMinProgressivePass
とgetSourceNumProgressivePasses
によって指定されるプログレッシブ・パスの1つに書き込まれるピクセルは、次のステップに渡されます。
最後に、各ピクセルのソース・サンプルはsetDestinationBands
のコメントに記述されるアルゴリズムを使用して、デスティネーション・バンドにマッピングされます。
プラグインの書込み側は、プラグイン固有の追加のインタフェースを実装するサブクラスを提供することにより、ImageReadParam
の機能を拡張できます。 どのインタフェースが利用可能か、それがどのように使用されるかは、プラグインによります。 読取り側は、認識しないImageReadParam
サブクラスの拡張機能をそのまま無視します。 また、getDefaultReadParam
を介して、読取り側自体のImageReadParam
インスタンスを作成する場合、通常、使用不可であるオプション機能はすべて無視されます。
クエリー・メソッドは、将来のために用意されている場合を除き、ImageReader
のすべての実装でサポートされる必要があります。たとえば、ソースの描画サイズはオプションですが、サブサンプリングはサポートされる必要があります。
ImageReader
, ImageWriter
, ImageWriteParam
修飾子と型 | フィールド | 説明 |
---|---|---|
protected boolean |
canSetSourceRenderSize |
この
ImageReadParam がソースの描画寸法を設定できる場合はtrue です。 |
protected BufferedImage |
destination |
現在のデスティネーション
BufferedImage 、または何も設定されていない場合はnull です。 |
protected int[] |
destinationBands |
int の配列としての、使用するデスティネーション・バンドのセットです。 |
protected int |
minProgressivePass |
ソースから読み取るプログレッシブ・パスの最小インデックスです。
|
protected int |
numProgressivePasses |
ソースから読み取るプログレッシブ・パスの最大数です。
|
protected Dimension |
sourceRenderSize |
canSetSourceRenderSize がtrue の場合、目的のソース描画の幅と高さです。それ以外の場合はnull です。 |
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
コンストラクタ | 説明 |
---|---|
ImageReadParam() |
ImageReadParam を構築します。 |
修飾子と型 | メソッド | 説明 |
---|---|---|
boolean |
canSetSourceRenderSize() |
この読取り側が、復号化プロセスの一部として、
setSourceRenderSize メソッドによって、ソース・イメージを任意のサイズで描画できるようにする場合、true を返します。 |
BufferedImage |
getDestination() |
setDestination メソッドによって現在設定されているBufferedImage を返します。何も設定されていない場合はnull を返します。 |
int[] |
getDestinationBands() |
データが配置されているバンド・インデックスのセットを返します。
|
int |
getSourceMaxProgressivePass() |
getSourceNumProgressivePasses がInteger.MAX_VALUE と等しい場合は、Integer.MAX_VALUE を返します。 |
int |
getSourceMinProgressivePass() |
復号化される最初のプログレッシブ・パスのインデックスを返します。
|
int |
getSourceNumProgressivePasses() |
復号化されるプログレッシブ・パスの数を返します。
|
Dimension |
getSourceRenderSize() |
setSourceRenderSize メソッドによって設定されている場合、復号化の間に描画されるように、イメージの幅と高さを返します。 |
void |
setDestination(BufferedImage destination) |
復号化されるピクセル・データのデスティネーションとして使用する
BufferedImage を提供します。 |
void |
setDestinationBands(int[] destinationBands) |
データが配置されているデスティネーション・バンドのインデックスを設定します。
|
void |
setDestinationType(ImageTypeSpecifier destinationType) |
ImageTypeSpecifier を使用して、目的のイメージ形式をデスティネーション・イメージに設定します。 |
void |
setSourceProgressivePasses(int minPass, int numPasses) |
復号化されるプログレッシブ・パスの範囲を設定します。
|
void |
setSourceRenderSize(Dimension size) |
イメージを任意のサイズで描画できる場合、ソースの幅と高さを指定された値に設定します。
|
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setSourceBands, setSourceRegion, setSourceSubsampling
protected boolean canSetSourceRenderSize
ImageReadParam
がソースの描画寸法を設定できる場合はtrue
です。 デフォルト値はfalse
です。 サブクラスは手動でこの値を設定する必要があります。
ソースの描画サイズの設定をサポートしないImageReader
は、この値をfalse
に設定する必要があります。
protected Dimension sourceRenderSize
canSetSourceRenderSize
がtrue
の場合、目的のソース描画の幅と高さです。それ以外の場合はnull
です。
ソースの描画サイズの設定をサポートしないImageReader
は、この値を無視します。
protected BufferedImage destination
BufferedImage
、または何も設定されていない場合はnull
です。 デフォルト値はnull
です。 protected int[] destinationBands
int
の配列としての、使用するデスティネーション・バンドのセットです。 デフォルトの値はnull
です。これは、すべてのデスティネーション・バンドが順番に書き込まれることを示します。 protected int minProgressivePass
サブクラスは、この値が負にならないようにする必要があります。
protected int numProgressivePasses
Integer.MAX_VALUE
に設定されます。これは、使用可能な最後のパスまで復号化されることを示します。
サブクラスは、この値が正になるようにする必要があります。 さらに、この値がInteger.MAX_VALUE
ではない場合、minProgressivePass+numProgressivePasses - 1
はInteger.MAX_VALUE
を超えてはいけません。
public void setDestinationType(ImageTypeSpecifier destinationType)
IIOParam
ImageTypeSpecifier
を使用して、目的のイメージ形式をデスティネーション・イメージに設定します。
読込み時に、このメソッドを使用してデスティネーションのレイアウトが設定された場合、ImageReader
read
メソッドの各呼出しは、指定されたタイプの指示子によって指定された形式を使用して、新しいBufferedImage
を返します。 副作用として、ImageReadParam.setDestination(BufferedImage)
によって設定されるすべてのデスティネーションBufferedImage
は、デスティネーションとして設定されなくなります。 言い換えると、このメソッドはsetDestination((BufferedImage)null)
の呼び出しと考えることもできます。
書込み時に、デスティネーションのタイプはイメージのカラー・タイプを決めるために使用される場合があります。 SampleModel
情報は無視されて、null
になります。 たとえば、4バンドのイメージはCMYKまたはRGBAデータのいずれかで表せます。 デスティネーションのタイプが設定された場合、そのColorModel
はイメージ自体にあるすべてのColorModel
をオーバーライドします。 これは、イメージのColorModel
が、書き込まれたバンドのサブセットではなくイメージ全体を参照するので、setSourceBands
を使用する場合に重要です。
setDestinationType
、クラスIIOParam
destinationType
- デスティネーションのレイアウトとカラー・タイプを決定するために使用するImageTypeSpecifier
。IIOParam.getDestinationType()
public void setDestination(BufferedImage destination)
BufferedImage
を提供します。 現在設定されているイメージは、read
、readAll
、およびreadRaster
メソッドによって書き込まれ、これに対する参照はこれらのメソッドによって返されます。
上述のメソッドからのピクセル・データは、getDestinationOffset
によって指定される座標の開始時に書き込まれます。
destination
がnull
の場合、新しく作成されたBufferedImage
は、これらのメソッドによって返されます。
読込み時に、イメージのColorModel
とSampleModel
が、ImageReader
のgetImageTypes
メソッドから返されるImageTypeSpecifier
の1つに対応することを確認するために検査されます。 対応しない場合、読取り側はIIOException
をスローします。
destination
- 書き込まれるBufferedImage、またはnull
。getDestination()
public BufferedImage getDestination()
setDestination
メソッドによって現在設定されているBufferedImage
を返します。何も設定されていない場合はnull
を返します。setDestination(java.awt.image.BufferedImage)
public void setDestinationBands(int[] destinationBands)
値null
は、すべてのデスティネーション・バンドが使用されることを示します。
デスティネーション・バンドが指定されない場合、デスティネーション・バンドのサブセットの選択は、読込みの出力イメージのバンド数に影響を与えません。作成されるデスティネーション・イメージは、このメソッドが呼び出されなかったかのように、同じバンド数を保持します。 デスティネーション・イメージに異なるバンド数が必要な場合、ImageReadParam.setDestination
メソッドを使用してイメージを提供する必要があります。
デスティネーション・バンドの最大インデックスより大きい値が指定された場合、または使用するソース・バンドの数とデスティネーション・バンドの数が異なる場合、読み込みまたは書込み時に、読取り側または書込み側によってIllegalArgumentException
がスローされます。 ImageReader.checkReadParamBandSettings
メソッドは、このテストを自動化するために使用されます。
destinationBands
- 使用する整数型バンド・インデックスの配列。IllegalArgumentException
- destinationBands
が負または重複する値を保持する場合。getDestinationBands()
, IIOParam.getSourceBands()
, ImageReader.checkReadParamBandSettings(javax.imageio.ImageReadParam, int, int)
public int[] getDestinationBands()
null
が返されます。 null
。setDestinationBands(int[])
public boolean canSetSourceRenderSize()
setSourceRenderSize
メソッドによって、ソース・イメージを任意のサイズで描画できるようにする場合、true
を返します。 このメソッドがfalse
を返す場合、setSourceRenderSize
の呼出しはUnsupportedOperationException
をスローします。 true
。setSourceRenderSize(java.awt.Dimension)
public void setSourceRenderSize(Dimension size) throws UnsupportedOperationException
ImageReader
のgetWidth
およびgetHeight
メソッドから返される値は、このメソッドによって影響を受けないことに注意してください。これらは、引き続きイメージのデフォルトのサイズを返します。 同様に、イメージがタイリングされる場合も、タイルの幅と高さはデフォルトのサイズによって指定されます。
通常、幅と高さは、幅と高さの比率がImageReader.getAspectRatio
から返されるイメージの縦横比と正確に近似するよう選択する必要があります。
このプラグインで描画サイズの設定ができない場合、UnsupportedOperationException
がスローされます。
描画サイズの設定を削除するには、size
に値null
を渡します。
size
- 望ましい幅と高さを指定するDimension
。IllegalArgumentException
- 幅または高さのいずれかが負または0の場合。UnsupportedOperationException
- このプラグインで、イメージのサイズ変更がサポートされない場合。getSourceRenderSize()
, ImageReader.getWidth(int)
, ImageReader.getHeight(int)
, ImageReader.getAspectRatio(int)
public Dimension getSourceRenderSize()
setSourceRenderSize
メソッドによって設定されている場合、復号化の間に描画されるように、イメージの幅と高さを返します。 値null
は、何も設定が行われていないことを示します。 Dimension
としての、ソース・イメージの描画される幅と高さ。setSourceRenderSize(java.awt.Dimension)
public void setSourceProgressivePasses(int minPass, int numPasses)
プログレッシブ・パスは、通常段階的に高くなる実効解像度でイメージ全体を再復号化します。ただし、この場合より大きい転送帯域幅が必要になります。 もっとも一般的なプログレッシブ・エンコーディングが使用されるのは、JPEG形式の場合です。この場合、連続するパスに、より詳細な高周波イメージ・コンテンツの表現が含まれます。
復号化される実際のパスの数は、ストリームで使用可能な実際のパスの数に基づいて、復号化時に決定されます。 したがって、minPass+numPasses - 1
が使用可能な最後のパスのインデックスより大きい場合、復号化はそのパスで終了します。
Integer.MAX_VALUE
のnumPasses
の値は、minPass
より前方のすべてのパスが読み取られることを示します。 そうでない場合、最後のパスのインデックス(つまり、minPass+numPasses - 1
)はInteger.MAX_VALUE
を超えてはいけません。
unsetSourceProgressivePasses
メソッドはありません。setSourceProgressivePasses(0, Integer.MAX_VALUE)
の呼出しによって、同じ効果が得られます。
minPass
- 復号化される最初のパスのインデックス。numPasses
- 復号化されるパスの最大数。IllegalArgumentException
- minPass
が負の場合、numPasses
が負または0の場合、あるいはnumPasses
がInteger.MAX_VALUE
より小さく、minPass+numPasses - 1
がINTEGER.MAX_VALUE
より大きい場合。getSourceMinProgressivePass()
, getSourceMaxProgressivePass()
public int getSourceMinProgressivePass()
setSourceProgressivePasses(int, int)
, getSourceNumProgressivePasses()
public int getSourceMaxProgressivePass()
getSourceNumProgressivePasses
がInteger.MAX_VALUE
と等しい場合は、Integer.MAX_VALUE
を返します。 それ以外の場合はgetSourceMinProgressivePass()+getSourceNumProgressivePasses() - 1
を返します。 Integer.MAX_VALUE
。public int getSourceNumProgressivePasses()
Integer.MAX_VALUE
が返されます。 setSourceProgressivePasses(int, int)
, getSourceMinProgressivePass()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。