- java.lang.Object
-
- javax.imageio.IIOParam
-
- 已知直接子类:
-
ImageReadParam
,ImageWriteParam
public abstract class IIOParam extends Object
描述流如何解码或编码的所有类的超类。 此类包含ImageReadParam
和ImageWriteParam
共享的所有变量和方法。该类提供了指定源区域和目标区域的机制。 读取时,源是流,内存中的映像是目标。 写作时,这些都是相反的。 在写入的情况下,目的地区域可以仅与支持像素替换的写入器一起使用。
可以使用可移动的子采样网格为读者和作者指定抽取次采样。
可以选择源和目的地频带的子集。
-
-
Field Summary
Fields Modifier and Type Field 描述 protected IIOParamController
controller
该IIOParamController
将用于提供此设置IIOParam
对象时activateController
方法被调用。protected IIOParamController
defaultController
当调用activateController
方法时,默认的IIOParamController
将用于为此IIOParam
对象提供设置。protected Point
destinationOffset
应放置左上角解码像素的目的地偏移量。protected ImageTypeSpecifier
destinationType
一个ImageTypeSpecifier
用于在读取时生成目标图像,或者在写入时设置输出颜色类型。protected int[]
sourceBands
int
s的阵列,表示将使用哪些源频段,或null
。protected Rectangle
sourceRegion
源区域,如果没有设置,null
。protected int
sourceXSubsampling
在水平方向应用抽取次采样。protected int
sourceYSubsampling
在垂直方向应用抽取次采样。protected int
subsamplingXOffset
在采样之前应用于子采样网格的水平偏移。protected int
subsamplingYOffset
在二次采样之前应用于子采样网格的垂直偏移。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
IIOParam()
受保护的构造函数只能由子类调用。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
activateController()
激活此IIOParam
对象的已安装的IIOParamController
,并返回结果值。IIOParamController
getController()
返回当前安装的IIOParamController
。IIOParamController
getDefaultController()
返回默认的IIOParamController
,如果有一个,不管当前安装的控制器。Point
getDestinationOffset()
返回目标图像中要放置像素的偏移量。ImageTypeSpecifier
getDestinationType()
返回读取的返回图像的类型,如果通过调用setDestination(ImageTypeSpecifier)
设置的图像的类型为ImageTypeSpecifier
。int[]
getSourceBands()
返回要使用的源频带集。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
s的阵列指示将使用哪些源频段,或null
。 如果是null
,null
使用的源频带集合如setSourceBands
方法的注释所述。 不应该允许任何价值为负数。
-
destinationType
protected ImageTypeSpecifier destinationType
一个ImageTypeSpecifier
用于在读取时生成目标图像,或者在写入时设置输出颜色类型。 如果未设置,则值为null
。 默认值为null
。
-
destinationOffset
protected Point destinationOffset
应放置左上角解码像素的目的地偏移量。 默认值为(0,0)。
-
defaultController
protected IIOParamController defaultController
当调用activateController
方法时,默认的IIOParamController
将用于为此IIOParam
对象提供设置。 这个默认值应该由子类设置,选择提供自己的默认控制器(通常是GUI)来设置参数。
-
controller
protected IIOParamController controller
该IIOParamController
将用于提供此设置IIOParam
对象时activateController
方法被调用。 此值覆盖任何默认控制器,即使为空。
-
-
方法详细信息
-
setSourceRegion
public void setSourceRegion(Rectangle sourceRegion)
设置感兴趣的源区域。 感兴趣的区域被描述为一个矩形,源图像的左上角是像素(0,0),并且向下和向右增加值。 实际使用的像素数将取决于setSourceSubsampling
设置的子采样因子。 如果子采样被设置为使得该数字为零,则将抛出IllegalStateException
。由该方法指定的感兴趣的源区域将根据需要进行修剪以适应源边界以及实际I / O时的目标偏移量,宽度和高度。
null
的sourceRegion
将删除任何区域规范,导致使用整个图像。- 参数
-
sourceRegion
- aRectangle
指定感兴趣的源区域,或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
采样像素的区域(或图像)原点的偏移量。 调整子样本网格的原点对于在将非常大的源图像进行子采样到将被组装成完整的子采样图像的目的地区域时避免接缝是有用的。 大多数用户都希望将这些参数保留在0。要使用的像素数和扫描线的数量如下计算。
扫描线中子采样像素的数量由下式给出
truncate[(width - subsamplingXOffset + sourceXSubsampling - 1) / sourceXSubsampling]
。如果区域是这样的宽度为零,则抛出一个
IllegalStateException
。可以类似地计算要使用的扫描线的数量。
如果该区域用于创建大图像的子采样图块,其中图块宽度和高度不是子采样周期的倍数,则将二次采样网格设置为开始于源区域原点以外的位置的功能非常有用。 如果子采样网格从块到块不保持一致,则在块边界处将存在伪像。 通过调整每个瓦片的子采样网格偏移量进行补偿,可以避免这些伪像。 折衷的是,为了避免这些工件,瓷砖的尺寸不一样。 在这种情况下使用的网格偏移量由下式给出:
网格偏移= [周期 - (区域偏移模周期)]模周期)如果
sourceXSubsampling
或sourceYSubsampling
为0或IllegalArgumentException
将抛出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)
设置要使用的源频带的索引。 不允许重复索引。A
null
值表示将使用所有源频段。在读取时,如果已经指定了大于最大可用源频带索引的值,或者要使用的源频带和目标频带数量不同,读写器将抛出
IllegalArgumentException
。 可以使用ImageReader.checkReadParamBandSettings
方法自动执行此测试。语义上,一个副本是由阵列组成的; 对此调用之后的数组内容的更改对此
IIOParam
没有任何影响。- 参数
-
sourceBands
- 要使用的整数带索引数组。 - 异常
-
IllegalArgumentException
- 如果sourceBands
包含负值或重复值。 - 另请参见:
-
getSourceBands()
,ImageReadParam.setDestinationBands(int[])
,ImageReader.checkReadParamBandSettings(javax.imageio.ImageReadParam, int, int)
-
getSourceBands
public int[] getSourceBands()
返回要使用的源频带集。 返回的值是通过最近一次调用设置为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
尚未被调用,则返回一个具有零X和Y值的Point
(这是正确的值)。- 结果
-
目的地偏移量为
Point
。 - 另请参见:
-
setDestinationOffset(java.awt.Point)
-
setController
public void setController(IIOParamController controller)
设置IIOParamController
被用来提供用于此设置IIOParam
对象时activateController
方法被调用时,重写所有默认控制器。 如果参数为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()
激活已安装的IIOParamController
对于此IIOParam
对象并返回结果值。 当此方法返回true
,此IIOParam
对象的所有值将准备好进行下一次读取或写入操作。 如果返回false
则此对象中的设置不会受到干扰( 即用户取消了该操作)。通常,控制器将是为特定插件提供
IIOParam
子类的用户界面的GUI。 控制器不需要GUI。- 结果
-
true
如果控制器正常完成。 - 异常
-
IllegalStateException
- 如果当前没有安装控制器。 - 另请参见:
-
IIOParamController
,setController(IIOParamController)
,getController()
,getDefaultController()
,hasController()
-
-