|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.imageio
类 ImageReadParam
java.lang.Object javax.imageio.IIOParam javax.imageio.ImageReadParam
- 直接已知子类:
- JPEGImageReadParam
-
public class ImageReadParam
- extends IIOParam
描述如何对流进行解码的类。此类的实例或其子类用于提供 ImageReader
实例的规定“入门”信息。
编码为文件或流的一部分的图像可以被认为是向多维扩展的:宽度和高度的空间维数、band 的数量以及逐步解码传递。此类允许选中所有这些维数中的图像的相邻(不相邻)矩形子区域来进行解码。此外,可以不连续地对空间维数进行二次取样。最后,颜色和格式转换可以通过控制目标图像的 ColorModel
和 SampleModel
来指定,或者通过提供 BufferedImage
或使用 ImageTypeSpecifier
来指定。
ImageReadParam
对象用于指定如何在输入时从 Java Image I/O 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件将从其 ImageReader
实现的 getDefaultReadParam
方法中返回 ImageReadParam
的实例。
由 ImageReadParam
实例维护的状态与将被解码的任何特定图像无关。在进行实际解码时,read 参数中设置的值与将解码的图像的实际属性组合在一起,这些属性来自将接收解码像素数据的流和目标 BufferedImage
。例如,使用 setSourceRegion
设置的源区域将首先与实际有效源区域相交。结果将由 getDestinationOffset
返回的值转换,得到的矩形与实际有效目标区域相交,从而产生将被写入的目标区域。
由 ImageReadParam
指定的参数将被应用于图像,如下所示。首先,如果已经通过 setSourceRenderSize
设置呈现大小,则整个解码图像将按 getSourceRenderSize
给出的大小来呈现。否则,图像的实际大小将由 ImageReader.getWidth
和 ImageReader.getHeight
给定。
接下来,将根据 getSourceXOffset
、getSourceYOffset
、getSourceWidth
和 getSourceHeight
指定的源区域裁剪图像。
然后根据
中给出的因子对得到的区域进行二次取样。第一个像素、每一行的像素数和行数都取决于二次取样设置值。调用所得矩形的最小 X 和 Y 坐标 (IIOParam.setSourceSubsampling
minX
, minY
)、其宽度 w
及其高度 h
。
将此矩形偏移 (getDestinationOffset().x
, getDestinationOffset().y
),并根据目标边界进行裁剪。如果没有设置目标图像,则定义目标图像的宽度为 getDestinationOffset().x
+ w
,高度为 getDestinationOffset().y
+ h
,以便源区域的所有像素都可以写入目标区域中。
二次取样之后放入目标图像中的像素以及写入由 getSourceMinProgressivePass
和 getSourceNumProgressivePasses
指定的某一逐步传递中的那些像素都传递给下一步骤。
最后,根据 setDestinationBands
的注释中描述的算法,将每个像素的源样本映射到目标 band。
插件 writer 可以通过提供实现额外的、特定于插件的接口来扩展 ImageReadParam
的功能。由插件负责记录哪些接口可用以及如何使用。reader 将安静地忽略所有其未知的 ImageReadParam
子类扩展功能。此外,将忽略通常在通过 getDefaultReadParam
创建自己的 ImageReadParam
实例时禁用的所有可选功能。
注意,如果不存在针对某一功能的查询方法,所有 ImageReader
实现就必须都支持该功能(例如,源呈现大小是可选的,但二次取样必须受支持)。
- 另请参见:
-
ImageReader
,ImageWriter
,ImageWriteParam
字段摘要 | |
---|---|
protected boolean |
canSetSourceRenderSize 如果此 ImageReadParam 允许设置源呈现维数,则为 true 。 |
protected BufferedImage |
destination 当前目标 BufferedImage ;如果没有设置目标图像,则为 null 。 |
protected int[] |
destinationBands 要使用的目标 band 集合( int 数组的形式)。 |
protected int |
minProgressivePass 从源中读取的逐步传递的最小索引。 |
protected int |
numProgressivePasses 从源中读取的逐步传递的最大数量。 |
protected Dimension |
sourceRenderSize 如果 canSetSourceRenderSize 为 true ,则为源的所需呈现宽度和高度;或者为 null 。 |
从类 javax.imageio.IIOParam 继承的字段 |
---|
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset |
构造方法摘要 | |
---|---|
ImageReadParam() 构造一个 ImageReadParam 。 |
方法摘要 | |
---|---|
boolean |
canSetSourceRenderSize() 如果此 reader 允许通过使用 setSourceRenderSize 方法以任意大小将源图像呈现为解码过程的一部分,则返回 true 。 |
BufferedImage |
getDestination() 返回当前由 setDestination 方法设置的 BufferedImage ,如果没有设置,则返回 null 。 |
int[] |
getDestinationBands() 返回 band 索引的集合,数据将置于该集合中。 |
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) 设置将在其中放置数据的目标 band 的索引。 |
void |
setDestinationType(ImageTypeSpecifier destinationType) 使用 ImageTypeSpecifier 设置目标图像的所需图像类型。 |
void |
setSourceProgressivePasses(int minPass, int numPasses) 设置将被解码的逐步传递的范围。 |
void |
setSourceRenderSize(Dimension size) 如果能够以任意大小呈现图像,则将源宽度和高度设置为所提供的值。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
canSetSourceRenderSize
protected boolean canSetSourceRenderSize
-
如果此
ImageReadParam
允许设置源呈现维数,则为true
。默认情况下,该值为false
。子类必须手工设置此值。不支持设置源呈现大小的
ImageReader
应该将该值设置为false
。
sourceRenderSize
protected Dimension sourceRenderSize
-
如果
canSetSourceRenderSize
为true
,则为源的所需呈现宽度和高度;或者为null
。不支持设置源呈现大小的
ImageReader
可以忽略此值。
destination
protected BufferedImage destination
-
当前目标
BufferedImage
;如果没有设置目标图像,则为null
。默认情况下,该值为null
。
destinationBands
protected int[] destinationBands
-
要使用的目标 band 集合(
int
数组的形式)。默认情况下,该值为null
,指示应该按顺序写入的所有目标 band。
minProgressivePass
protected int minProgressivePass
-
从源中读取的逐步传递的最小索引。默认情况下,该值被设置为 0,指示应该解码从第一个可用传递开始的传递。
子类应该确保此值为非负。
numProgressivePasses
protected int numProgressivePasses
-
从源中读取的逐步传递的最大数量。默认情况下,该值被设置为
Integer.MAX_VALUE
,指示应该解码直至最后一个可用传递(包括)的传递。子类应该确保此值为正数。此外,如果该值不是
Integer.MAX_VALUE
,则minProgressivePass + numProgressivePasses - 1
不应该超过Integer.MAX_VALUE
。
构造方法详细信息 |
---|
ImageReadParam
public ImageReadParam()
-
构造一个
ImageReadParam
。
方法详细信息 |
---|
setDestinationType
public void setDestinationType(ImageTypeSpecifier destinationType)
-
从类
IIOParam
复制的描述 -
使用
ImageTypeSpecifier
设置目标图像的所需图像类型。在读取时,如果已经使用此方法设置目标区域的布局,则每次调用
ImageReader
的read
方法都将返回一个新的BufferedImage
,它使用由所提供的类型说明符指定的格式。此方法的一个副作用是,任何由ImageReadParam.setDestination(BufferedImage)
设置的目标BufferedImage
将不再被设置为目标。换句话说,在调用setDestination((BufferedImage)null)
时可以考虑此方法。在写入时,或许会使用目标类型确定图像的颜色类型。
SampleModel
信息将被忽略,其可以为null
。例如,一个 4 band 的图像可以表示 CMYK 或 RGBA 数据。如果设置了目标类型,则其ColorModel
将重写该图像自身的所有ColorModel
。这在使用setSourceBands
时极其重要,因为该图像的ColorModel
将引用整个图像,而不是被写入的 band 的子集。 -
- 覆盖:
-
类
IIOParam
中的setDestinationType
-
- 参数:
-
destinationType
- 用来确定目标布局和颜色类型的ImageTypeSpecifier
。 - 另请参见:
-
IIOParam.getDestinationType()
setDestination
public void setDestination(BufferedImage destination)
-
提供一个
BufferedImage
,将其用作解码像素数据的目标。当前设置的图像将由read
、readAll
和readRaster
方法写入,对该图像的引用将由这些方法返回。来自上述那些方法的像素数据将从
getDestinationOffset
指定的偏移量开始写入。如果
destination
为null
,则新创建的BufferedImage
将由这些方法返回。在读取时,检查该图像来验证其
ColorModel
和SampleModel
是否对应于从ImageReader
的getImageTypes
方法返回的ImageTypeSpecifier
之一。如果不对应,则 reader 将抛出IIOException
。 -
- 参数:
-
destination
- 要写入数据的 BufferedImage,或者为null
。 - 另请参见:
-
getDestination()