所有类


javax.imageio
类 ImageReadParam

java.lang.Object
  继承者 javax.imageio.IIOParam
      继承者 javax.imageio.ImageReadParam
直接已知子类:
JPEGImageReadParam

public class ImageReadParam
   
   
   
   
   
extends IIOParam

描述如何对流进行解码的类。此类的实例或其子类用于提供 ImageReader 实例的规定“入门”信息。

编码为文件或流的一部分的图像可以被认为是向多维扩展的:宽度和高度的空间维数、band 的数量以及逐步解码传递。此类允许选中所有这些维数中的图像的相邻(不相邻)矩形子区域来进行解码。此外,可以不连续地对空间维数进行二次取样。最后,颜色和格式转换可以通过控制目标图像的 ColorModelSampleModel 来指定,或者通过提供 BufferedImage 或使用 ImageTypeSpecifier 来指定。

ImageReadParam 对象用于指定如何在输入时从 Java Image I/O 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件将从其 ImageReader 实现的 getDefaultReadParam 方法中返回 ImageReadParam 的实例。

ImageReadParam 实例维护的状态与将被解码的任何特定图像无关。在进行实际解码时,read 参数中设置的值与将解码的图像的实际属性组合在一起,这些属性来自将接收解码像素数据的流和目标 BufferedImage。例如,使用 setSourceRegion 设置的源区域将首先与实际有效源区域相交。结果将由 getDestinationOffset 返回的值转换,得到的矩形与实际有效目标区域相交,从而产生将被写入的目标区域。

ImageReadParam 指定的参数将被应用于图像,如下所示。首先,如果已经通过 setSourceRenderSize 设置呈现大小,则整个解码图像将按 getSourceRenderSize 给出的大小来呈现。否则,图像的实际大小将由 ImageReader.getWidthImageReader.getHeight 给定。

接下来,将根据 getSourceXOffsetgetSourceYOffsetgetSourceWidthgetSourceHeight 指定的源区域裁剪图像。

然后根据 IIOParam.setSourceSubsampling 中给出的因子对得到的区域进行二次取样。第一个像素、每一行的像素数和行数都取决于二次取样设置值。调用所得矩形的最小 X 和 Y 坐标 (minX, minY)、其宽度 w 及其高度 h

将此矩形偏移 (getDestinationOffset().x, getDestinationOffset().y),并根据目标边界进行裁剪。如果没有设置目标图像,则定义目标图像的宽度为 getDestinationOffset().x + w,高度为 getDestinationOffset().y + h,以便源区域的所有像素都可以写入目标区域中。

二次取样之后放入目标图像中的像素以及写入由 getSourceMinProgressivePassgetSourceNumProgressivePasses 指定的某一逐步传递中的那些像素都传递给下一步骤。

最后,根据 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
          如果 canSetSourceRenderSizetrue,则为源的所需呈现宽度和高度;或者为 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)
          如果能够以任意大小呈现图像,则将源宽度和高度设置为所提供的值。
 
从类 javax.imageio.IIOParam 继承的方法
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setSourceBands, setSourceRegion, setSourceSubsampling
 
从类 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
如果 canSetSourceRenderSizetrue,则为源的所需呈现宽度和高度;或者为 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 设置目标图像的所需图像类型。

在读取时,如果已经使用此方法设置目标区域的布局,则每次调用 ImageReaderread 方法都将返回一个新的 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,将其用作解码像素数据的目标。当前设置的图像将由 readreadAllreadRaster 方法写入,对该图像的引用将由这些方法返回。

来自上述那些方法的像素数据将从 getDestinationOffset 指定的偏移量开始写入。

如果 destinationnull,则新创建的 BufferedImage 将由这些方法返回。

在读取时,检查该图像来验证其 ColorModelSampleModel 是否对应于从 ImageReadergetImageTypes 方法返回的 ImageTypeSpecifier 之一。如果不对应,则 reader 将抛出 IIOException

参数:
destination - 要写入数据的 BufferedImage,或者为 null
另请参见:
getDestination()

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部