- java.lang.Object
-
- javax.imageio.IIOParam
-
- 已知直接子类:
-
ImageReadParam
,ImageWriteParam
public abstract class IIOParam extends Object
所有类的超类,描述如何解码或编码流。 此类包含ImageReadParam
和ImageWriteParam
共享的所有变量和方法。此类提供了指定源区域和目标区域的机制。 读取时,源是流,内存中的图像是目标。 写作时,这些都是相反的。 在写入的情况下,目标区域可以仅与支持像素替换的写入器一起使用。
可以使用可移动的二次采样网格为读取器和写入器指定抽取子采样。
可以选择源和目标频带的子集。
-
-
字段汇总
字段 变量和类型 字段 描述 protected IIOParamController
controller
IIOParamController
将在调用activateController
方法时用于为此IIOParam
对象提供设置。protected IIOParamController
defaultController
默认值IIOParamController
,用于在调用activateController
方法时为此IIOParam
对象提供设置。protected Point
destinationOffset
应放置左上角解码像素的目标偏移量。protected ImageTypeSpecifier
destinationType
ImageTypeSpecifier
用于在读取时生成目标图像,或在写入时设置输出颜色类型。protected int[]
sourceBands
int
的数组,指示将使用哪些源波段,或null
。protected Rectangle
sourceRegion
源区域,如果没有设置,则在null
。protected int
sourceXSubsampling
要在水平方向上应用的抽取子采样。protected int
sourceYSubsampling
要在垂直方向上应用的抽取子采样。protected int
subsamplingXOffset
在二次采样之前应用于二次采样网格的水平偏移。protected int
subsamplingYOffset
在二次采样之前应用于二次采样网格的垂直偏移。
-
构造方法摘要
构造方法 变量 构造器 描述 protected
IIOParam()
受保护的构造函数只能由子类调用。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
activateController()
激活此IIOParam
对象的已安装IIOParamController
并返回结果值。IIOParamController
getController()
返回当前安装的IIOParamController
。IIOParamController
getDefaultController()
无论当前安装的控制器如何,如果有,则返回默认值IIOParamController
。Point
getDestinationOffset()
返回目标图像中要放置像素的偏移量。ImageTypeSpecifier
getDestinationType()
返回读取返回的图像类型(如果通过调用setDestination(ImageTypeSpecifier)
设置为ImageTypeSpecifier
。int[]
getSourceBands()
返回要使用的源band的集合。Rectangle
getSourceRegion()
返回要使用的源区域。int
getSourceXSubsampling()
返回每个像素要前进的源列数。int
getSourceYSubsampling()
返回每个像素的前进行数。int
getSubsamplingXOffset()
返回子采样网格的水平偏移量。int
getSubsamplingYOffset()
返回子采样网格的垂直偏移量。boolean
hasController()
如果为此IIOParam
对象安装了控制器,则返回true
。void
setController(IIOParamController controller)
设置IIOParamController
,用于在调用activateController
方法时为此IIOParam
对象提供设置,从而覆盖任何默认控制器。void
setDestinationOffset(Point destinationOffset)
指定目标图像中的偏移量,在此处放置未来的解码像素,读取时或写入区域的位置。void
setDestinationType(ImageTypeSpecifier destinationType)
使用ImageTypeSpecifier
为目标图像设置所需的图像类型。void
setSourceBands(int[] sourceBands)
设置要使用的源波段的索引。void
setSourceRegion(Rectangle sourceRegion)
设置感兴趣的源区域。void
setSourceSubsampling(int sourceXSubsampling, int sourceYSubsampling, int subsamplingXOffset, int subsamplingYOffset)
指定要应用于I / O的抽取子采样。
-
-
-
字段详细信息
-
sourceRegion
protected Rectangle sourceRegion
源区域,如果没有设置,则在null
。
-
sourceXSubsampling
protected int sourceXSubsampling
要在水平方向上应用的抽取子采样。 默认情况下,该值为1
。 该值不得为负数或0。
-
sourceYSubsampling
protected int sourceYSubsampling
要在垂直方向上应用的抽取子采样。 默认情况下,该值为1
。 该值不得为负数或0。
-
subsamplingXOffset
protected int subsamplingXOffset
在二次采样之前应用于二次采样网格的水平偏移。 要使用的第一个像素将从该区域的原点偏移该量,如果没有指定区域,则偏移该图像的原点。
-
subsamplingYOffset
protected int subsamplingYOffset
在二次采样之前应用于二次采样网格的垂直偏移。 要使用的第一个像素将从该区域的原点偏移该量,如果没有指定区域,则偏移该图像的原点。
-
sourceBands
protected int[] sourceBands
int
的数组,指示将使用哪些源带,或null
。 如果是null
,null
使用的源带集合如setSourceBands
方法的注释中所述。 不应该允许任何价值为负。
-
destinationType
protected ImageTypeSpecifier destinationType
ImageTypeSpecifier
用于在读取时生成目标图像,或在写入时设置输出颜色类型。 如果已设置为非,则值为null
。 默认情况下,该值为null
。
-
destinationOffset
protected Point destinationOffset
应放置左上角解码像素的目标偏移量。 默认情况下,该值为(0,0)。
-
defaultController
protected IIOParamController defaultController
默认值IIOParamController
,用于在调用activateController
方法时为此IIOParam
对象提供设置。 此默认值应由选择提供其自己的默认控制器(通常为GUI)的子类设置,以便设置参数。
-
controller
protected IIOParamController controller
IIOParamController
将在调用activateController
方法时用于为此IIOParam
对象提供设置。 此值将覆盖任何默认控制器,即使为null也是如此。
-
-
方法详细信息
-
setSourceRegion
public void setSourceRegion(Rectangle sourceRegion)
设置感兴趣的源区域。 感兴趣的区域被描述为矩形,源图像的左上角为像素(0,0)并且向下和向右增加值。 实际使用的像素数取决于setSourceSubsampling
设置的子采样因子。 如果已设置子采样使得此数字为零,则将抛出IllegalStateException
。此方法指定的感兴趣源区域将根据需要进行剪裁,以适应源边界,以及实际I / O时的目标偏移,宽度和高度。
的值
null
为sourceRegion
将删除任何区域规范,引起要使用的整个图像。- 参数
-
sourceRegion
-一个Rectangle
指定感兴趣,或源极区域null
。 - 异常
-
IllegalArgumentException
- 如果sourceRegion
非null
且sourceRegion.x
或sourceRegion.y
为负数。 -
IllegalArgumentException
- 如果sourceRegion
非null
且sourceRegion.width
或sourceRegion.height
为负数或0。 -
IllegalStateException
- 如果子采样使得此区域的子采样宽度或高度为零。 - 另请参见:
-
getSourceRegion()
,setSourceSubsampling(int, int, int, int)
,setDestinationOffset(java.awt.Point)
,getDestinationOffset()
-
getSourceRegion
public Rectangle getSourceRegion()
返回要使用的源区域。 返回值是最近一次调用setSourceRegion
设置的值,如果没有设置区域,则null
。- 结果
-
感兴趣的源区域为
Rectangle
或null
。 - 另请参见:
-
setSourceRegion(java.awt.Rectangle)
-
setSourceSubsampling
public void setSourceSubsampling(int sourceXSubsampling, int sourceYSubsampling, int subsamplingXOffset, int subsamplingYOffset)
指定要应用于I / O的抽取子采样。sourceXSubsampling
和sourceYSubsampling
参数指定子采样周期( 即 ,在每个源像素之后前进的行数和列数)。 具体来说,1的周期将使用每一行或每列; 2周期将使用每隔一行或每列。subsamplingXOffset
和subsamplingYOffset
参数指定subsamplingXOffset
subsamplingYOffset
采样像素的区域(或图像)原点的偏移量。 调整子样本网格的原点对于在将非常大的源图像二次采样到将被组装成完整的二次采样图像的目标区域时避免接缝是有用的。 大多数用户只想将这些参数保留为0。要使用的像素和扫描线的数量计算如下。
扫描线中的二次采样像素数由下式给出
truncate[(width - subsamplingXOffset + sourceXSubsampling - 1) / sourceXSubsampling]
。如果该区域的宽度为零,则抛出
IllegalStateException
。可以类似地计算要使用的扫描线的数量。
如果区域用于创建大图像的子采样切片,其中切片宽度和高度不是子采样周期的倍数,则将子采样网格设置为从源区域原点以外的某处开始的能力非常有用。 如果子采样网格在图块之间不一致,则图块边界处将存在工件。 通过调整每个瓦片的子采样网格偏移来补偿,可以避免这些伪像。 权衡是为了避免这些伪影,瓷砖的大小不一样。 在这种情况下使用的网格偏移量由下式给出:
grid offset = [period - (region offset modulo period)] modulo period)如果
sourceXSubsampling
或sourceYSubsampling
为0或为负数,则将抛出IllegalArgumentException
。如果
subsamplingXOffset
或subsamplingYOffset
为负数或大于或等于相应的期间,则将抛出IllegalArgumentException
。没有
unsetSourceSubsampling
方法; 只需调用setSourceSubsampling(1, 1, 0, 0)
即可恢复默认值。- 参数
-
sourceXSubsampling
- 像素之间前进的列数。 -
sourceYSubsampling
- 像素之间前进的行数。 -
subsamplingXOffset
- 区域内第一subsamplingXOffset
的水平偏移量,如果没有设置区域,则为图像内的水平偏移量。 -
subsamplingYOffset
- 区域内第一subsamplingYOffset
的水平偏移量,如果没有设置区域,则为图像内的水平偏移量。 - 异常
-
IllegalArgumentException
- 如果任一周期为负或0,或者网格偏移为负或大于相应周期。 -
IllegalStateException
- 如果源区域使得子采样输出不包含像素。
-
getSourceXSubsampling
public int getSourceXSubsampling()
返回每个像素要前进的源列数。如果尚未调用
setSourceSubsampling
,则返回1(这是正确的值)。- 结果
- 源子采样X周期。
- 另请参见:
-
setSourceSubsampling(int, int, int, int)
,getSourceYSubsampling()
-
getSourceYSubsampling
public int getSourceYSubsampling()
返回每个像素的前进行数。如果尚未调用
setSourceSubsampling
,则返回1(这是正确的值)。- 结果
- 源子采样Y期。
- 另请参见:
-
setSourceSubsampling(int, int, int, int)
,getSourceXSubsampling()
-
getSubsamplingXOffset
public int getSubsamplingXOffset()
返回子采样网格的水平偏移量。如果尚未调用
setSourceSubsampling
,则返回0(这是正确的值)。- 结果
- 源子采样网格X偏移量。
- 另请参见:
-
setSourceSubsampling(int, int, int, int)
,getSubsamplingYOffset()
-
getSubsamplingYOffset
public int getSubsamplingYOffset()
返回子采样网格的垂直偏移量。如果尚未调用
setSourceSubsampling
,则返回0(这是正确的值)。- 结果
- 源子采样网格Y偏移量。
- 另请参见:
-
setSourceSubsampling(int, int, int, int)
,getSubsamplingXOffset()
-
setSourceBands
public void setSourceBands(int[] sourceBands)
设置要使用的源波段的索引。 不允许重复索引。值
null
表示将使用所有源波段。在读取时,如果指定了大于最大可用源带索引的值或者要使用的源带和目标带的数量不同,则读取器或写入器将抛出
IllegalArgumentException
。ImageReader.checkReadParamBandSettings
方法可用于自动化该测试。从语义上讲,副本是由数组组成的; 此调用后对数组内容的更改对此
IIOParam
没有影响。- 参数
-
sourceBands
- 要使用的整数带索引数组。 - 异常
-
IllegalArgumentException
- 如果sourceBands
包含负值或重复值。 - 另请参见:
-
getSourceBands()
,ImageReadParam.setDestinationBands(int[])
,ImageReader.checkReadParamBandSettings(javax.imageio.ImageReadParam, int, int)
-
getSourceBands
public int[] getSourceBands()
返回要使用的源band的集合。 返回值是最近一次调用setSourceBands
或null
设置的值,如果没有调用setSourceBands
。从语义上讲,返回的数组是一个副本; 此调用后对数组内容的更改对此
IIOParam
没有影响。- 结果
-
要使用的源波段组,或
null
。 - 另请参见:
-
setSourceBands(int[])
-
setDestinationType
public void setDestinationType(ImageTypeSpecifier destinationType)
使用ImageTypeSpecifier
为目标图像设置所需的图像类型。在读取时,如果使用此方法设置了目标布局,则每次调用
ImageReader
read
方法将使用提供的类型说明符指定的格式返回新的BufferedImage
。 作为副作用,任何目的地BufferedImage
通过设置ImageReadParam.setDestination(BufferedImage)
将不再被设定为目的地。 换句话说,该方法可以被认为是调用setDestination((BufferedImage)null)
。写入时,目标类型可用于确定图像的颜色类型。
SampleModel
信息将被忽略,可能是null
。 例如,4带图像可以表示CMYK或RGBA数据。 如果设置了目标类型,则其ColorModel
将覆盖图像本身上的任何ColorModel
。 当使用setSourceBands
时,这是至关重要的,因为图像的ColorModel
将引用整个图像而不是正在写入的波段子集。- 参数
-
destinationType
- 用于确定目标布局和颜色类型的ImageTypeSpecifier
。 - 另请参见:
-
getDestinationType()
-
getDestinationType
public ImageTypeSpecifier getDestinationType()
返回由读返回图像的类型,如果是通过调用设置为setDestination(ImageTypeSpecifier)
,为ImageTypeSpecifier
。 如果未设置,则返回null
。- 结果
-
描述目的地类型的
ImageTypeSpecifier
,或null
。 - 另请参见:
-
setDestinationType(javax.imageio.ImageTypeSpecifier)
-
setDestinationOffset
public void setDestinationOffset(Point destinationOffset)
指定目标图像中的偏移量,在此处放置未来的解码像素,读取时或写入区域的位置。在读取时,要在目标
BufferedImage
内写入的区域将从该偏移开始,并且具有由感兴趣的源区域,子采样参数和目的地边界确定的宽度和高度。正常写入不受此方法的影响,仅使用
ImageWriter.replacePixels
执行写入。 对于此类写入,指定的偏移量在输出流图像中,其像素正在被修改。没有
unsetDestinationOffset
方法; 只需调用setDestinationOffset(new Point(0, 0))
即可恢复默认值。- 参数
-
destinationOffset
- 目的地的偏移量,为Point
。 - 异常
-
IllegalArgumentException
- 如果destinationOffset
是null
。 - 另请参见:
-
getDestinationOffset()
,ImageWriter.replacePixels(java.awt.image.RenderedImage, javax.imageio.ImageWriteParam)
-
getDestinationOffset
public Point getDestinationOffset()
返回目标图像中要放置像素的偏移量。如果
setDestinationOffsets
没有被调用,一个Point
零X和Y值返回(这是正确的值)。- 结果
-
目标偏移量为
Point
。 - 另请参见:
-
setDestinationOffset(java.awt.Point)
-
setController
public void setController(IIOParamController controller)
设置IIOParamController
,用于在调用activateController
方法时为此IIOParam
对象提供设置,从而覆盖任何默认控制器。 如果参数为null
,则不使用任何控制器,包括任何默认值。 要恢复默认值,请使用setController(getDefaultController())
。- 参数
-
controller
- 适当的IIOParamController
或null
。 - 另请参见:
-
IIOParamController
,getController()
,getDefaultController()
,hasController()
,activateController()
-
getController
public IIOParamController getController()
返回当前安装的IIOParamController
。 如果有一个,null
或最近一次调用setController
的参数,这可能是默认值。- 结果
-
目前安装的是
IIOParamController
,或者是null
。 - 另请参见:
-
IIOParamController
,setController(javax.imageio.IIOParamController)
,getDefaultController()
,hasController()
,activateController()
-
getDefaultController
public IIOParamController getDefaultController()
无论当前安装的控制器如何,都返回默认值IIOParamController
(如果有)。 如果没有默认控制器,则返回null
。- 结果
-
默认
IIOParamController
,或null
。 - 另请参见:
-
IIOParamController
,setController(IIOParamController)
,getController()
,hasController()
,activateController()
-
hasController
public boolean hasController()
如果为此IIOParam
对象安装了控制器,则返回true
。 这将返回true
如果getController
不会返回null
。- 结果
-
true
如果安装了控制器。 - 另请参见:
-
IIOParamController
,setController(IIOParamController)
,getController()
,getDefaultController()
,activateController()
-
activateController
public boolean activateController()
激活此IIOParam
对象的已安装IIOParamController
并返回结果值。 当此方法返回true
,此IIOParam
对象的所有值都将为下一个读取或写入操作做好准备。 如果返回false
则此对象中的任何设置都不会受到干扰( 即 ,用户取消了该操作)。通常,控制器将是为特定插件提供
IIOParam
的子类的用户界面的GUI。 但是,控制器不必是GUI。- 结果
-
true
如果控制器正常完成。 - 异常
-
IllegalStateException
- 如果当前没有安装控制器。 - 另请参见:
-
IIOParamController
,setController(IIOParamController)
,getController()
,getDefaultController()
,hasController()
-
-