ImageReader 对象通常由特定格式的服务提供者接口 (SPI) 类实例化。服务提供商类(例如 ImageReaderSpi 的实例)在 IIORegistry 中注册,后者将它们用于格式识别和可用格式读取器和写入器的呈现。
设置输入源时(使用 setInput 方法),它可能被标记为“仅向前搜索”。此设置意味着包含在输入源中的图像将仅按顺序读取,可能允许阅读器避免缓存包含与先前已读取图像相关联的数据的输入部分。
- 参见:
-
字段摘要
字段修饰符和类型Field描述protected Locale[]可用于本地化警告消息的Locale数组,如果不支持本地化,则为null数组。protected booleantrue如果当前输入源已被标记为允许元数据被setInput忽略。protected ObjectImageInputStream或其他Object由setInput检索并由getInput检索。protected Locale当前用于本地化的Locale,如果未设置则为null。protected int读取的最小有效索引,初始为 0。protected ImageReaderSpi实例化此对象的ImageReaderSpi,如果其身份未知或不存在,则为null。protected List<IIOReadProgressListener>当前注册的IIOReadProgressListener的List,默认初始化为null,与空的List同义。protected booleantrue如果当前输入源已被setInput标记为仅允许前向搜索。protected List<IIOReadUpdateListener>当前注册的IIOReadUpdateListener的List,默认初始化为null,与空的List同义。protected List<IIOReadWarningListener>当前注册的IIOReadWarningListener的List,默认初始化为null,与空的List同义。与每个当前注册的IIOReadWarningListener关联的Locale的List,默认初始化为null,它与空的List同义。 -
构造方法总结
构造方法修饰符构造方法描述protectedImageReader(ImageReaderSpi originatingProvider) 构造一个ImageReader并将其originatingProvider字段设置为提供的值。 -
方法总结
修饰符和类型方法描述voidabort()请求中止任何当前读取操作。protected boolean如果在实例化读取器或调用clearAbortRequest后发出了中止当前读取操作的请求,则返回true。void将IIOReadProgressListener添加到已注册进度监听器列表中。void将IIOReadUpdateListener添加到已注册的更新监听器列表中。void将IIOReadWarningListener添加到已注册的警告监听器列表中。boolean如果此插件仅支持读取Raster像素数据,则返回true。protected static voidcheckReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands) 读者可以使用一种实用方法来测试ImageReadParam的源和目标波段设置的有效性。protected void清除任何先前的中止请求。protected static voidcomputeRegions(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion) 计算源感兴趣区域和目标感兴趣区域,同时考虑源图像的宽度和高度、可选的目标图像和可选的ImageReadParam。voiddispose()允许释放此对象持有的任何资源。floatgetAspectRatio(int imageIndex) 返回给定图像的纵横比(即宽度除以高度)作为float。Locale[]返回可用于本地化警告监听器和压缩设置的Locale数组。返回适合此格式的默认ImageReadParam对象。protected static BufferedImagegetDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height) 返回应写入解码像素数据的BufferedImage。返回一个String标识输入源的格式。abstract intgetHeight(int imageIndex) 返回输入源中给定图像的高度(以像素为单位)。abstract IIOMetadatagetImageMetadata(int imageIndex) 返回包含与给定图像关联的元数据的IIOMetadata对象,如果读取器不支持读取元数据、设置为忽略元数据或没有可用元数据,则返回null。getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames) 返回一个IIOMetadata对象,表示与给定图像关联的元数据,或者null如果读取器不支持读取元数据或没有可用的元数据。abstract Iterator<ImageTypeSpecifier>getImageTypes(int imageIndex) 以ImageTypeSpecifierss 的形式返回一个Iterator包含可能的图像类型,给定图像可能被解码为这些图像类型。getInput()返回先前设置为输入源的ImageInputStream或其他Object。返回当前设置的Locale,如果没有设置则返回null。int返回读取图像、缩略图或图像元数据的最低有效索引。abstract intgetNumImages(boolean allowSearch) 返回当前输入源可用的图像数量,不包括缩略图。intgetNumThumbnails(int imageIndex) 返回与给定图像关联的缩略图预览图像的数量。返回在构造函数中传入的ImageReaderSpi。getRawImageType(int imageIndex) 返回一个ImageTypeSpecifier指示SampleModel和ColorModel最接近代表图像的“原始”内部格式。protected static RectanglegetSourceRegion(ImageReadParam param, int srcWidth, int srcHeight) 读者可以使用一种实用方法来计算应读取的源图像区域,同时考虑所提供的ImageReadParam中的任何源区域和子采样偏移设置。abstract IIOMetadata返回一个IIOMetadata对象,表示与整个输入源相关联的元数据(即,不与任何特定图像相关联),或者null如果读取器不支持读取元数据,设置为忽略元数据,或者如果没有可用的元数据。getStreamMetadata(String formatName, Set<String> nodeNames) 返回一个IIOMetadata对象,表示与整个输入源关联的元数据(即,不与任何特定图像关联)。intgetThumbnailHeight(int imageIndex, int thumbnailIndex) 返回由thumbnailIndex索引的缩略图预览图像的高度,与ImageIndex索引的图像相关联。intgetThumbnailWidth(int imageIndex, int thumbnailIndex) 返回由thumbnailIndex索引的缩略图预览图像的宽度,与ImageIndex索引的图像相关联。intgetTileGridXOffset(int imageIndex) 返回给定图像中图块 (0, 0) 左上角的 X 坐标。intgetTileGridYOffset(int imageIndex) 返回给定图像中图块 (0, 0) 左上角的 Y 坐标。intgetTileHeight(int imageIndex) 返回给定图像中图块的高度。intgetTileWidth(int imageIndex) 返回给定图像中图块的宽度。abstract intgetWidth(int imageIndex) 返回输入源中给定图像的宽度(以像素为单位)。booleanhasThumbnails(int imageIndex) 如果给定图像具有与其关联的缩略图预览图像,则返回true。boolean如果通过将true作为ignoreMetadata参数传递给setInput方法,将当前输入源标记为允许忽略元数据,则返回true。booleanisImageTiled(int imageIndex) 如果图像被组织成,则返回true瓷砖,即大小相等的不重叠矩形。booleanisRandomAccessEasy(int imageIndex) 如果给定图像的存储格式对随机访问像素没有固有障碍,则返回true。boolean如果当前输入源已被标记为仅通过将true作为seekForwardOnly参数传递给setInput方法来向前搜索,则返回true。protected void通过调用它们的imageComplete方法向所有注册的IIOReadProgressListener广播图像读取的完成。protected voidprocessImageProgress(float percentageDone) 通过调用它们的imageProgress方法向所有已注册的IIOReadProgressListener广播当前图像完成百分比。protected voidprocessImageStarted(int imageIndex) 通过调用它们的imageStarted方法向所有已注册的IIOReadProgressListener广播图像读取的开始。protected voidprocessImageUpdate(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) 通过调用它们的imageUpdate方法向所有已注册的IIOReadUpdateListener广播一组样本的更新。protected voidprocessPassComplete(BufferedImage theImage) 通过调用它们的passComplete方法向所有已注册的IIOReadUpdateListener广播渐进传递的结束。protected voidprocessPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) 通过调用它们的passStarted方法向所有已注册的IIOReadUpdateListener广播渐进传递的开始。protected void通过调用它们的readAborted方法向所有已注册的IIOReadProgressListener广播读取已中止。protected void通过调用它们的sequenceComplete方法向所有已注册的IIOReadProgressListener广播图像读取序列的完成。protected voidprocessSequenceStarted(int minIndex) 通过调用它们的sequenceStarted方法向所有已注册的IIOReadProgressListener广播一系列图像读取的开始。protected void通过调用它们的thumbnailComplete方法向所有已注册的IIOReadProgressListener广播缩略图读取的完成。protected voidprocessThumbnailPassComplete(BufferedImage theThumbnail) 通过调用它们的thumbnailPassComplete方法向所有已注册的IIOReadUpdateListener广播缩略图渐进传递的结束。protected voidprocessThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) 通过调用它们的thumbnailPassStarted方法向所有已注册的IIOReadUpdateListener广播缩略图渐进传递的开始。protected voidprocessThumbnailProgress(float percentageDone) 通过调用它们的thumbnailProgress方法向所有已注册的IIOReadProgressListener广播当前缩略图完成百分比。protected voidprocessThumbnailStarted(int imageIndex, int thumbnailIndex) 通过调用它们的thumbnailStarted方法向所有已注册的IIOReadProgressListener广播缩略图读取的开始。protected voidprocessThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) 通过调用它们的thumbnailUpdate方法,将缩略图中的一组样本的更新广播到所有已注册的IIOReadUpdateListeners。protected voidprocessWarningOccurred(String warning) 通过调用它们的warningOccurred方法向所有已注册的IIOReadWarningListener广播一条警告消息。protected voidprocessWarningOccurred(String baseName, String keyword) 通过使用从ResourceBundle获取的字符串调用它们的warningOccurred方法,向所有已注册的IIOReadWarningListener广播本地化警告消息。read(int imageIndex) 读取由imageIndex索引的图像并将其作为完整的BufferedImage返回,使用默认值ImageReadParam。abstract BufferedImageread(int imageIndex, ImageReadParam param) 使用提供的ImageReadParam读取由imageIndex索引的图像并将其作为完整的BufferedImage返回。readAll(int imageIndex, ImageReadParam param) 使用提供的ImageReadParam读取由imageIndex索引的图像并返回包含图像、缩略图和关联图像元数据的IIOImage。readAll(Iterator<? extends ImageReadParam> params) 以IIOImage对象的形式从输入源返回包含所有图像、缩略图和元数据的Iterator,从getMinIndex给出的索引开始。readAsRenderedImage(int imageIndex, ImageReadParam param) 返回一个RenderedImage对象,其中包含由imageIndex索引的图像的内容。boolean如果此阅读器理解的图像格式支持与其关联的缩略图预览图像,则返回true。readRaster(int imageIndex, ImageReadParam param) 返回一个新的Raster对象,其中包含来自图像流的原始像素数据,没有应用任何颜色转换。readThumbnail(int imageIndex, int thumbnailIndex) 返回由thumbnailIndex索引的缩略图预览图像,与ImageIndex索引的图像关联为BufferedImage。readTile(int imageIndex, int tileX, int tileY) 读取tileX和tileY参数指示的图块,将其作为BufferedImage返回。readTileRaster(int imageIndex, int tileX, int tileY) 返回一个新的Raster对象,其中包含图块中的原始像素数据,未应用任何颜色转换。void删除所有当前注册的IIOReadProgressListener对象。void删除所有当前注册的IIOReadUpdateListener对象。void删除所有当前注册的IIOReadWarningListener对象。void从已注册进度监听器列表中删除IIOReadProgressListener。void从已注册更新监听器列表中删除IIOReadUpdateListener。void从已注册的错误监听器列表中删除IIOReadWarningListener。voidreset()将ImageReader恢复到其初始状态。void将要使用的输入源设置为给定的ImageInputStream或其他Object。void将要使用的输入源设置为给定的ImageInputStream或其他Object。void将要使用的输入源设置为给定的ImageInputStream或其他Object。void将此ImageReader的当前Locale设置为给定值。
-
字段详细信息
-
originatingProvider
实例化此对象的ImageReaderSpi,如果其身份未知或不存在,则为null。默认情况下,它被初始化为null。 -
input
ImageInputStream或其他Object由setInput检索并由getInput检索。默认情况下,它被初始化为null。 -
seekForwardOnly
protected boolean seekForwardOnlytrue如果当前输入源已被setInput标记为仅允许前向搜索。默认情况下,值为false。- 参见:
-
ignoreMetadata
protected boolean ignoreMetadatatrue如果当前输入源已被标记为允许元数据被setInput忽略。默认情况下,值为false。- 参见:
-
minIndex
protected int minIndex用于读取的最小有效索引,最初为 0。当seekForwardOnly为true时,各种方法可能会在尝试访问与具有较低索引的图像关联的数据时抛出IndexOutOfBoundsException。- 参见:
-
availableLocales
可用于本地化警告消息的Locale数组,如果不支持本地化,则为null数组。 -
locale
当前用于本地化的Locale,如果未设置则为null。 -
warningListeners
当前注册的IIOReadWarningListener的List,默认初始化为null,与空的List同义。 -
warningLocales
与每个当前注册的IIOReadWarningListener关联的Locale的List,默认初始化为null,它与空的List同义。 -
progressListeners
当前注册的IIOReadProgressListener的List,默认初始化为null,与空的List同义。 -
updateListeners
当前注册的IIOReadUpdateListener的List,默认初始化为null,与空的List同义。
-
-
构造方法详细信息
-
ImageReader
构造一个ImageReader并将其originatingProvider字段设置为提供的值。使用扩展的子类应该提供一个带有签名
(ImageReaderSpi,Object)的构造函数,以便检索扩展对象。如果扩展对象不合适,则应抛出IllegalArgumentException。- 参数:
originatingProvider- 调用此构造函数的ImageReaderSpi或null。
-
-
方法详情
-
getFormatName
返回一个String标识输入源的格式。默认实现返回
originatingProvider.getFormatNames()[0]。可能没有原始服务提供者或需要不同命名策略的实现应该覆盖此方法。- 返回:
-
格式名称,作为
String。 - 抛出:
IOException- 如果从输入源读取信息时发生错误。
-
getOriginatingProvider
返回在构造函数中传入的ImageReaderSpi。请注意,此值可能是null。- 返回:
-
一个
ImageReaderSpi或null。 - 参见:
-
setInput
将要使用的输入源设置为给定的ImageInputStream或其他Object。必须在使用任何查询或读取方法之前设置输入源。如果input是null,任何当前设置的输入源都将被删除。无论如何,minIndex的值都会被初始化为0。seekForwardOnly参数控制getMinIndex返回的值是否会随着每个图像(或缩略图,或图像元数据)被读取而增加。如果seekForwardOnly为真,则调用read(index)将抛出IndexOutOfBoundsExceptionifindex < this.minIndex;否则,minIndex的值将被设置为index。如果seekForwardOnly是false,则minIndex的值将保持为 0,而不管任何读取操作。ignoreMetadata参数(如果设置为true)允许读取器忽略读取期间遇到的任何元数据。对getStreamMetadata和getImageMetadata方法的后续调用可能会返回null,而从readAll返回的IIOImage可能会从它们的getMetadata方法返回null。设置此参数可以让读者更有效地工作。读者可以选择忽略此设置并正常返回元数据。子类应注意删除基于先前流的任何缓存信息,例如标头信息或部分解码的图像数据。
使用
Object而不是ImageInputStream是为了直接与捕获设备或成像协议交互的读者。合法类集由读者服务提供商的getInputTypes方法公布;大多数读者将返回一个仅包含ImageInputStream.class的单元素数组,以表明他们只接受一个ImageInputStream。默认实现根据
originatingProvider.getInputTypes()返回的列表检查input参数,如果参数不是列表中其中一个类的实例,则失败。如果原始提供者设置为null,则只有当输入是ImageInputStream时才会接受输入。- 参数:
input-ImageInputStream或其他Object用于未来解码。seekForwardOnly- 如果是true,图像和元数据只能从该输入源按升序读取。ignoreMetadata- 如果是true,元数据在读取期间可能会被忽略。- 抛出:
IllegalArgumentException- 如果input不是原始服务提供商的getInputTypes方法返回的类之一的实例,或者不是ImageInputStream。- 参见:
-
setInput
将要使用的输入源设置为给定的ImageInputStream或其他Object。必须在使用任何查询或读取方法之前设置输入源。如果input是null,任何当前设置的输入源都将被删除。无论如何,minIndex的值都会被初始化为0。seekForwardOnly参数控制getMinIndex返回的值是否会随着每个图像(或缩略图,或图像元数据)被读取而增加。如果seekForwardOnly为真,则调用read(index)将抛出IndexOutOfBoundsExceptionifindex < this.minIndex;否则,minIndex的值将被设置为index。如果seekForwardOnly是false,则minIndex的值将保持为 0,而不管任何读取操作。此方法等效于
setInput(input, seekForwardOnly, false)。- 参数:
input-ImageInputStream或其他Object用于未来解码。seekForwardOnly- 如果是true,图像和元数据只能从该输入源按升序读取。- 抛出:
IllegalArgumentException- 如果input不是原始服务提供商的getInputTypes方法返回的类之一的实例,或者不是ImageInputStream。- 参见:
-
setInput
将要使用的输入源设置为给定的ImageInputStream或其他Object。必须在使用任何查询或读取方法之前设置输入源。如果input是null,任何当前设置的输入源都将被删除。无论如何,minIndex的值都会被初始化为0。此方法等效于
setInput(input, false, false)。- 参数:
input-ImageInputStream或其他Object用于未来解码。- 抛出:
IllegalArgumentException- 如果input不是原始服务提供商的getInputTypes方法返回的类之一的实例,或者不是ImageInputStream。- 参见:
-
getInput
返回先前设置为输入源的ImageInputStream或其他Object。如果未设置输入源,则返回null。- 返回:
-
将用于未来解码的
Object或null。 - 参见:
-
isSeekForwardOnly
public boolean isSeekForwardOnly()如果当前输入源已被标记为仅通过将true作为seekForwardOnly参数传递给setInput方法来向前搜索,则返回true。- 返回:
true如果输入源仅向前搜索。- 参见:
-
isIgnoringMetadata
public boolean isIgnoringMetadata()如果通过将true作为ignoreMetadata参数传递给setInput方法,将当前输入源标记为允许忽略元数据,则返回true。- 返回:
true如果可以忽略元数据。- 参见:
-
getMinIndex
public int getMinIndex()返回读取图像、缩略图或图像元数据的最低有效索引。如果seekForwardOnly()是false,这个值通常会保持为 0,表示随机访问是可能的。否则,它将包含最近访问的索引的值,并以单调方式增加。- 返回:
- 阅读的最低法定索引。
-
getAvailableLocales
返回可用于本地化警告监听器和压缩设置的Locale数组。null的返回值表示不支持本地化。默认实现返回
availableLocales实例变量的克隆,如果它是非null,否则返回null。- 返回:
-
可以用作
setLocale或null的参数的Locale数组。
-
setLocale
将此ImageReader的当前Locale设置为给定值。null的值会删除任何先前的设置,并指示阅读器应根据其认为合适的方式进行本地化。- 参数:
locale- 所需的Locale或null。- 抛出:
IllegalArgumentException- 如果locale是非null但不是getAvailableLocales返回的值之一。- 参见:
-
getLocale
返回当前设置的Locale,如果没有设置则返回null。- 返回:
-
当前的
Locale或null。 - 参见:
-
getNumImages
返回当前输入源可用的图像数量,不包括缩略图。请注意,某些图像格式(例如动画 GIF)不会指定流中存在多少图像。因此确定图像的数量将需要扫描整个流并且可能需要用于缓冲的存储器。如果要按顺序处理图像,则可以更有效地简单地调用
read并增加索引,直到抛出IndexOutOfBoundsException以指示没有更多图像可用。allowSearch参数可以设置为false以指示不需要穷举搜索;返回值将是-1,表示需要进行搜索。如果已指定输入并将seekForwardOnly设置为true,则如果allowSearch设置为true,此方法将抛出IllegalStateException。- 参数:
allowSearch- 如果是true,即使需要搜索,也会返回真实的图像数量。如果是false,读者可能会在不执行搜索的情况下返回-1。- 返回:
-
图像的数量,作为
int或-1如果allowSearch是false并且需要搜索。 - 抛出:
IllegalStateException- 如果尚未设置输入源,或者如果已指定输入并将seekForwardOnly设置为true。IOException- 如果从输入源读取信息时发生错误。- 参见:
-
getWidth
返回输入源中给定图像的宽度(以像素为单位)。如果图像可以呈现为用户指定的大小,则此方法返回默认宽度。
- 参数:
imageIndex- 要查询的图像的索引。- 返回:
-
图像的宽度,作为
int。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果从输入源读取宽度信息时发生错误。
-
getHeight
返回输入源中给定图像的高度(以像素为单位)。如果图像可以呈现为用户指定的大小,则此方法返回默认高度。
- 参数:
imageIndex- 要查询的图像的索引。- 返回:
-
图像的高度,作为
int。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果从输入源读取高度信息时发生错误。
-
isRandomAccessEasy
如果给定图像的存储格式对随机访问像素没有固有障碍,则返回true。对于大多数压缩格式,例如 JPEG,此方法应返回false,因为除了感兴趣区域之外,图像的大部分可能需要解码。这只是对希望高效的程序的提示;所有读者都必须能够读取
ImageReadParam中指定的任意区域。请注意,从该方法返回
false的格式可能仍然允许平铺(例如在 JPEG 中重新启动标记),并且随机访问在图块上可能相当有效。参见isImageTiled。保证所有图像都支持轻松随机访问或保证不支持轻松随机访问的阅读器可以在不访问任何图像数据的情况下分别返回
true或false。在这种情况下,即使没有设置输入源或图像索引越界也没有必要抛出异常。默认实现返回
false。- 参数:
imageIndex- 要查询的图像的索引。- 返回:
true如果读取给定图像的感兴趣区域可能是有效的。- 抛出:
IllegalStateException- 如果需要输入源来确定返回值,但尚未设置。IndexOutOfBoundsException- 如果必须访问图像以确定返回值,但提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getAspectRatio
返回给定图像的纵横比(即宽度除以高度)作为float。对于本质上可调整大小的图像,此方法提供了一种在给定所需高度的情况下确定适当宽度的方法,反之亦然。对于不可调整大小的图像,使用真实的宽度和高度。默认实现只返回
(float)getWidth(imageIndex)/getHeight(imageIndex)。- 参数:
imageIndex- 要查询的图像的索引。- 返回:
float指示给定图像的纵横比。- 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getRawImageType
返回一个ImageTypeSpecifier指示SampleModel和ColorModel最接近代表图像的“原始”内部格式。如果没有紧密匹配,则应返回保留图像中最多信息的类型。返回值也应包含在getImageTypes返回值列表中。默认实现仅返回
getImageType提供的列表中的第一个条目。- 参数:
imageIndex- 要查询的图像的索引。- 返回:
-
一个
ImageTypeSpecifier。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果从输入源读取格式信息时发生错误。
-
getImageTypes
以ImageTypeSpecifierss 的形式返回一个Iterator包含可能的图像类型,给定图像可能被解码为这些图像类型。至少会返回一种合法的图像类型。迭代器的第一个元素应该是最“自然”的类型,用于以尽可能少的损失解码图像。例如,对于 JPEG 图像,第一个条目应该是 RGB 图像,即使图像数据在内部存储在 YCbCr 颜色空间中。
- 参数:
imageIndex- 要成为retrieved的图像的索引。- 返回:
-
一个
Iterator包含至少一个ImageTypeSpecifier表示用于解码当前给定图像的建议图像类型。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果从输入源读取格式信息时发生错误。- 参见:
-
getDefaultReadParam
返回适合此格式的默认ImageReadParam对象。所有子类都应该为所有参数定义一组默认值,并通过此调用返回它们。在设置输入源之前可以调用此方法。默认实现构造并返回一个新的
ImageReadParam对象,该对象不允许源缩放(IE,它返回new ImageReadParam()。- 返回:
-
一个
ImageReadParam对象,可用于使用一组默认设置来控制解码过程。
-
getStreamMetadata
返回一个IIOMetadata对象,表示与整个输入源相关联的元数据(即,不与任何特定图像相关联),或者null如果读取器不支持读取元数据,设置为忽略元数据,或者如果没有可用的元数据。- 返回:
-
一个
IIOMetadata对象,或null。 - 抛出:
IOException- 如果在读取过程中发生错误。
-
getStreamMetadata
返回一个IIOMetadata对象,表示与整个输入源关联的元数据(即,不与任何特定图像关联)。如果不存在此类数据,则返回null。生成的元数据对象仅负责以
formatName命名的格式返回文档。在返回的任何文档中,只需要返回名称为nodeNames成员的节点。这样,根据实际需要的信息,读者进行的元数据处理量可以保持在最低限度。如果
formatName不是受支持的元数据格式的名称,则返回null。在所有情况下,返回比绝对必要的更有能力的元数据对象是合法的。格式名称和节点名称只是提示,可以用来减少读者的工作量。
在检查格式名称是否受支持后,默认实现仅返回调用
getStreamMetadata()的结果。如果不是,则返回null。- 参数:
formatName- 元数据格式名称,可用于从返回的IIOMetadata对象中检索文档。nodeNames- 一个Set包含可能包含在检索到的文档中的节点名称。- 返回:
-
一个
IIOMetadata对象,或null。 - 抛出:
IllegalArgumentException- 如果formatName是null。IllegalArgumentException- 如果nodeNames是null。IOException- 如果在读取过程中发生错误。
-
getImageMetadata
返回包含与给定图像关联的元数据的IIOMetadata对象,如果读取器不支持读取元数据、设置为忽略元数据或没有可用元数据,则返回null。- 参数:
imageIndex- 要检索其元数据的图像的索引。- 返回:
-
一个
IIOMetadata对象,或null。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getImageMetadata
public IIOMetadata getImageMetadata(int imageIndex, String formatName, Set <String > nodeNames) throws IOException 返回一个IIOMetadata对象,表示与给定图像关联的元数据,或者null如果读取器不支持读取元数据或没有可用的元数据。生成的元数据对象仅负责以
formatName命名的格式返回文档。在返回的任何文档中,只需要返回名称为nodeNames成员的节点。这样,根据实际需要的信息,读者进行的元数据处理量可以保持在最低限度。如果
formatName不是受支持的元数据格式的名称,则可能会返回null。在所有情况下,返回比绝对必要的更有能力的元数据对象是合法的。格式名称和节点名称只是提示,可以用来减少读者的工作量。
在检查格式名称是否受支持后,默认实现仅返回调用
getImageMetadata(imageIndex)的结果。如果不是,则返回null。- 参数:
imageIndex- 要检索其元数据的图像的索引。formatName- 元数据格式名称,可用于从返回的IIOMetadata对象中检索文档。nodeNames- 一个Set包含可能包含在检索到的文档中的节点名称。- 返回:
-
一个
IIOMetadata对象,或null。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IllegalArgumentException- 如果formatName是null。IllegalArgumentException- 如果nodeNames是null。IOException- 如果在读取过程中发生错误。
-
read
读取由imageIndex索引的图像并将其作为完整的BufferedImage返回,使用默认值ImageReadParam。这是调用read(imageIndex, null)的便捷方法。返回的图像将根据从
getImageTypes返回的第一个ImageTypeSpecifier进行格式化。任何已注册的
IIOReadProgressListener对象都将通过调用它们的imageStarted方法得到通知,然后在读取过程中调用它们的imageProgress方法。最后他们的imageComplete方法将被调用。IIOReadUpdateListener对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。- 参数:
imageIndex- 要检索的图像的索引。- 返回:
-
图像的所需部分作为
BufferedImage。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
read
使用提供的ImageReadParam读取由imageIndex索引的图像并将其作为完整的BufferedImage返回。返回的实际
BufferedImage将使用getDestination方法定义的算法进行选择。任何已注册的
IIOReadProgressListener对象都将通过调用它们的imageStarted方法得到通知,然后在读取过程中调用它们的imageProgress方法。最后他们的imageComplete方法将被调用。IIOReadUpdateListener对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。要读取的源 band 和要写入的目标 band 的集合通过在提供的
ImageReadParam上调用getSourceBands和getDestinationBands来确定。如果这些方法返回的数组的长度不同,则源 band 集包含的索引大于最大可用源索引,或者目标 band 集包含的索引大于最大合法目标索引,则抛出IllegalArgumentException。如果提供的
ImageReadParam包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。- 参数:
imageIndex- 要检索的图像的索引。param- 用于控制读取过程的ImageReadParam,或null。- 返回:
-
图像的所需部分作为
BufferedImage。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IllegalArgumentException- 如果param.getSourceBands和param.getDestinationBands指定的源和目标带的集合长度不同或包含超出范围的索引。IllegalArgumentException- 如果生成的图像的宽度或高度小于 1。IOException- 如果在读取过程中发生错误。
-
readAll
使用提供的ImageReadParam读取由imageIndex索引的图像并返回包含图像、缩略图和关联图像元数据的IIOImage。返回的
IIOImage引用的实际BufferedImage将使用getDestination方法定义的算法进行选择。任何已注册的
IIOReadProgressListener对象都将通过调用它们的imageStarted方法得到通知,然后在读取过程中调用它们的imageProgress方法。最后他们的imageComplete方法将被调用。IIOReadUpdateListener对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。要读取的源 band 和要写入的目标 band 的集合通过在提供的
ImageReadParam上调用getSourceBands和getDestinationBands来确定。如果这些方法返回的数组的长度不同,则源 band 集包含的索引大于最大可用源索引,或者目标 band 集包含的索引大于最大合法目标索引,则抛出IllegalArgumentException。无论区域设置如何,缩略图都将完整返回。
如果提供的
ImageReadParam包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),这些值将被忽略。- 参数:
imageIndex- 要检索的图像的索引。param- 用于控制读取过程的ImageReadParam,或null。- 返回:
IIOImage包含图像的所需部分、一组缩略图和关联的图像元数据。- 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IllegalArgumentException- 如果param.getSourceBands和param.getDestinationBands指定的源和目标带的集合长度不同或包含超出范围的索引。IllegalArgumentException- 如果生成的图像的宽度或高度小于 1。IOException- 如果在读取过程中发生错误。
-
readAll
以IIOImage对象的形式从输入源返回包含所有图像、缩略图和元数据的Iterator,从getMinIndex给出的索引开始。提供了包含ImageReadParam个对象的Iterator;从输入源读取的每个图像都会消耗一个元素,直到没有更多图像可用。如果读取参数Iterator用完了元素,但输入源中仍有更多图像可用,则默认读取参数将用于剩余图像。如果
params是null,默认读取参数将用于所有图像。返回的
IIOImage引用的实际BufferedImage将使用getDestination方法定义的算法进行选择。任何已注册的
IIOReadProgressListener对象将通过调用它们的sequenceStarted方法一次得到通知。然后,对于解码的每个图像,将调用imageStarted,然后随着读取的进行调用imageProgress,最后调用imageComplete。sequenceComplete方法将在最后一张图像解码后调用。IIOReadUpdateListener对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。要读取的源 band 和要写入的目标 band 的集合通过在提供的
ImageReadParam上调用getSourceBands和getDestinationBands来确定。如果这些方法返回的数组的长度不同,则源 band 集包含的索引大于最大可用源索引,或者目标 band 集包含的索引大于最大合法目标索引,则抛出IllegalArgumentException。无论区域设置如何,缩略图都将完整返回。
如果提供的任何
ImageReadParam包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。- 参数:
params- 一个包含ImageReadParam个对象的Iterator。- 返回:
Iterator表示输入源的内容为IIOImages。- 抛出:
IllegalStateException- 如果尚未设置输入源。IllegalArgumentException- 如果params的任何非null元素不是ImageReadParam。IllegalArgumentException- 如果param.getSourceBands和param.getDestinationBands指定的源和目标带的集合长度不同或包含超出范围的索引。IllegalArgumentException- 如果生成的图像的宽度或高度小于 1。IOException- 如果在读取过程中发生错误。- 参见:
-
canReadRaster
public boolean canReadRaster()如果此插件仅支持读取Raster像素数据,则返回true。如果此方法返回false,调用readRaster或readTileRaster将抛出UnsupportedOperationException。默认实现返回
false。- 返回:
true如果此插件支持读取原始Rasters。- 参见:
-
readRaster
返回一个新的Raster对象,其中包含来自图像流的原始像素数据,没有应用任何颜色转换。应用程序必须确定如何通过其他方式解释像素数据。提供的ImageReadParam对象中的任何目标或图像类型参数都将被忽略,但所有其他参数的使用与read方法中的完全相同,除了任何目标偏移量用作逻辑偏移量而不是物理偏移量。返回的Raster的大小将始终是裁剪到实际图像的源区域的大小。流本身的逻辑偏移量被忽略。此方法允许通常应用颜色转换的格式(如 JPEG)和通常不具有关联颜色空间的格式(如遥感或医学成像数据)提供对原始像素数据的访问。
任何已注册的
readUpdateListener都将被忽略,因为没有BufferedImage,但所有其他监听器的调用方式与read方法完全相同。如果
canReadRaster()返回false,此方法将抛出UnsupportedOperationException。如果提供的
ImageReadParam包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。默认实现抛出一个
UnsupportedOperationException。- 参数:
imageIndex- 要读取的图像的索引。param- 用于控制读取过程的ImageReadParam,或null。- 返回:
-
图像的所需部分作为
Raster。 - 抛出:
UnsupportedOperationException- 如果此插件不支持读取原始Rasters。IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果在读取过程中发生错误。- 参见:
-
isImageTiled
如果图像被组织成,则返回true瓷砖,即大小相等的不重叠矩形。阅读器插件可以选择是否在图像存储时显示图像中存在的平铺。当没有明确存在时,它甚至可以选择通告平铺。一般来说,只有在访问单个磁贴有一些优势(在速度或空间上)时,才应该公布磁贴。无论读取器是否宣传平铺,它都必须能够读取
ImageReadParam中指定的任意矩形区域。保证所有图像都被平铺或保证不被平铺的阅读器可以在不访问任何图像数据的情况下分别返回
true或false。在这种情况下,即使没有设置输入源或图像索引越界也没有必要抛出异常。默认实现只返回
false。- 参数:
imageIndex- 要查询的图像的索引。- 返回:
true如果图像是平铺的。- 抛出:
IllegalStateException- 如果需要输入源来确定返回值,但尚未设置。IndexOutOfBoundsException- 如果必须访问图像以确定返回值,但提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getTileWidth
返回给定图像中图块的宽度。默认实现只返回
getWidth(imageIndex),这对于非平铺图像是正确的。支持平铺的读者应该重写这个方法。- 参数:
imageIndex- 要查询的图像的索引。- 返回:
- 瓷砖的宽度。
- 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getTileHeight
返回给定图像中图块的高度。默认实现只返回
getHeight(imageIndex),这对于非平铺图像是正确的。支持平铺的读者应该重写这个方法。- 参数:
imageIndex- 要查询的图像的索引。- 返回:
- 瓷砖的高度。
- 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getTileGridXOffset
返回给定图像中图块 (0, 0) 左上角的 X 坐标。瓦片网格 X 偏移量始终具有相同值(通常为 0)的读取器可以在不访问任何图像数据的情况下返回该值。在这种情况下,即使没有设置输入源或图像索引越界也没有必要抛出异常。
默认实现仅返回 0,这对于大多数格式的非平铺图像和平铺图像都是正确的。支持使用非 (0, 0) 偏移量进行平铺的读者应该重写此方法。
- 参数:
imageIndex- 要查询的图像的索引。- 返回:
- 瓦片网格的 X 偏移量。
- 抛出:
IllegalStateException- 如果需要输入源来确定返回值,但尚未设置。IndexOutOfBoundsException- 如果必须访问图像以确定返回值,但提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
getTileGridYOffset
返回给定图像中图块 (0, 0) 左上角的 Y 坐标。瓦片网格 Y 偏移量始终具有相同值(通常为 0)的读取器可以在不访问任何图像数据的情况下返回该值。在这种情况下,即使没有设置输入源或图像索引越界也没有必要抛出异常。
默认实现仅返回 0,这对于大多数格式的非平铺图像和平铺图像都是正确的。支持使用非 (0, 0) 偏移量进行平铺的读者应该重写此方法。
- 参数:
imageIndex- 要查询的图像的索引。- 返回:
- 瓦片网格的 Y 偏移量。
- 抛出:
IllegalStateException- 如果需要输入源来确定返回值,但尚未设置。IndexOutOfBoundsException- 如果必须访问图像以确定返回值,但提供的索引超出范围。IOException- 如果在读取过程中发生错误。
-
readTile
读取tileX和tileY参数指示的图块,将其作为BufferedImage返回。如果参数超出范围,则会抛出IllegalArgumentException。如果图像未平铺,则值 0、0 将返回整个图像;任何其他值都会导致抛出IllegalArgumentException。此方法只是为了方便,等同于使用读取参数调用
read(int, ImageReadParam),指定源区域的偏移量为tileX*getTileWidth(imageIndex)、tileY*getTileHeight(imageIndex)以及宽度和高度为getTileWidth(imageIndex)、getTileHeight(imageIndex);子采样因子为 1,偏移量为 0。要对图块进行子采样,请使用指定该区域和不同子采样参数的读取参数调用read。如果
tileX和tileY为 0,则默认实现返回整个图像,否则抛出IllegalArgumentException。- 参数:
imageIndex- 要检索的图像的索引。tileX- 要检索的图块的列索引(从 0 开始)。tileY- 要检索的图块的行索引(从 0 开始)。- 返回:
-
瓷砖作为
BufferedImage。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果imageIndex超出范围。IllegalArgumentException- 如果图块索引超出范围。IOException- 如果在读取过程中发生错误。
-
readTileRaster
返回一个新的Raster对象,其中包含图块中的原始像素数据,未应用任何颜色转换。应用程序必须确定如何通过其他方式解释像素数据。如果
canReadRaster()返回false,此方法将抛出UnsupportedOperationException。默认实现检查是否支持读取
Rasters,如果支持,则在tileX和tileY为 0 时调用readRaster(imageIndex, null),否则抛出IllegalArgumentException。- 参数:
imageIndex- 要检索的图像的索引。tileX- 要检索的图块的列索引(从 0 开始)。tileY- 要检索的图块的行索引(从 0 开始)。- 返回:
-
瓷砖作为
Raster。 - 抛出:
UnsupportedOperationException- 如果此插件不支持读取原始Rasters。IllegalArgumentException- 如果图块索引超出范围。IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果imageIndex超出范围。IOException- 如果在读取过程中发生错误。- 参见:
-
readAsRenderedImage
返回一个RenderedImage对象,其中包含由imageIndex索引的图像的内容。默认情况下,返回的图像只是read(imageIndex, param)返回的BufferedImage。此方法的语义可能在几个方面不同于其他
read方法。首先,可以忽略ImageReadParam中设置的任何目标图像和/或图像类型。其次,不能保证通常的监听器调用会被调用,或者如果调用是有意义的。这是因为返回的图像在返回时可能没有完全填充像素数据,或者实际上在任何时候都没有。如果提供的
ImageReadParam包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。默认实现只调用
read(imageIndex, param)。- 参数:
imageIndex- 要检索的图像的索引。param- 用于控制读取过程的ImageReadParam,或null。- 返回:
-
提供图像视图的
RenderedImage对象。 - 抛出:
IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的索引超出范围。IllegalArgumentException- 如果param.getSourceBands和param.getDestinationBands指定的源和目标带的集合长度不同或包含超出范围的索引。IllegalArgumentException- 如果生成的图像的宽度或高度小于 1。IOException- 如果在读取过程中发生错误。
-
readerSupportsThumbnails
public boolean readerSupportsThumbnails()如果此阅读器理解的图像格式支持与其关联的缩略图预览图像,则返回true。默认实现返回false。如果此方法返回
false,hasThumbnails和getNumThumbnails将分别返回false和0,而readThumbnail将抛出UnsupportedOperationException,无论它们的参数如何。不支持缩略图的阅读器不需要实现任何与缩略图相关的方法。
- 返回:
true如果支持缩略图。
-
hasThumbnails
如果给定图像具有与其关联的缩略图预览图像,则返回true。如果格式不支持缩略图(readerSupportsThumbnails返回false),无论输入源是否已设置或imageIndex是否在边界内,都将返回false。如果
getNumThumbnails返回大于 0 的值,则默认实现返回true。- 参数:
imageIndex- 被查询图像的索引。- 返回:
true如果给定的图像有缩略图。- 抛出:
IllegalStateException- 如果阅读器支持缩略图但尚未设置输入源。IndexOutOfBoundsException- 如果阅读器支持缩略图但imageIndex超出范围。IOException- 如果在读取过程中发生错误。
-
getNumThumbnails
返回与给定图像关联的缩略图预览图像的数量。如果格式不支持缩略图,(readerSupportsThumbnails返回false),无论输入源是否已设置或imageIndex是否在边界内,都将返回0。默认实现返回 0 而不检查其参数。
- 参数:
imageIndex- 被查询图像的索引。- 返回:
- 与给定图像关联的缩略图数量。
- 抛出:
IllegalStateException- 如果阅读器支持缩略图但尚未设置输入源。IndexOutOfBoundsException- 如果阅读器支持缩略图但imageIndex超出范围。IOException- 如果在读取过程中发生错误。
-
getThumbnailWidth
返回由thumbnailIndex索引的缩略图预览图像的宽度,与ImageIndex索引的图像相关联。如果阅读器不支持缩略图(
readerSupportsThumbnails返回false),将抛出一个UnsupportedOperationException。默认实现只返回
readThumbnail(imageindex, thumbnailIndex).getWidth()。因此,如果可能,子类应该覆盖此方法,以避免强制读取缩略图。- 参数:
imageIndex- 要检索的图像的索引。thumbnailIndex- 要检索的缩略图的索引。- 返回:
-
所需缩略图的宽度为
int。 - 抛出:
UnsupportedOperationException- 如果不支持缩略图。IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的任一索引超出范围。IOException- 如果在读取过程中发生错误。
-
getThumbnailHeight
返回由thumbnailIndex索引的缩略图预览图像的高度,与ImageIndex索引的图像相关联。如果阅读器不支持缩略图(
readerSupportsThumbnails返回false),将抛出一个UnsupportedOperationException。默认实现只返回
readThumbnail(imageindex, thumbnailIndex).getHeight()。因此,如果可能,子类应该覆盖此方法,以避免强制读取缩略图。- 参数:
imageIndex- 要检索的图像的索引。thumbnailIndex- 要检索的缩略图的索引。- 返回:
-
所需缩略图的高度为
int。 - 抛出:
UnsupportedOperationException- 如果不支持缩略图。IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的任一索引超出范围。IOException- 如果在读取过程中发生错误。
-
readThumbnail
返回由thumbnailIndex索引的缩略图预览图像,与ImageIndex索引的图像关联为BufferedImage。任何已注册的
IIOReadProgressListener对象都将通过调用它们的thumbnailStarted、thumbnailProgress和thumbnailComplete方法得到通知。如果阅读器不支持缩略图,(
readerSupportsThumbnails返回false),无论输入源是否已设置或索引是否在边界内,都会抛出UnsupportedOperationException。默认实现抛出一个
UnsupportedOperationException。- 参数:
imageIndex- 要检索的图像的索引。thumbnailIndex- 要检索的缩略图的索引。- 返回:
-
所需的缩略图为
BufferedImage。 - 抛出:
UnsupportedOperationException- 如果不支持缩略图。IllegalStateException- 如果尚未设置输入源。IndexOutOfBoundsException- 如果提供的任一索引超出范围。IOException- 如果在读取过程中发生错误。
-
abort
public void abort()请求中止任何当前读取操作。中止后图像的内容将是未定义的。读者应在每次读取操作开始时调用
clearAbortRequest,并在读取过程中定期轮询abortRequested的值。 -
abortRequested
protected boolean abortRequested()如果在实例化读取器或调用clearAbortRequest后发出了中止当前读取操作的请求,则返回true。- 返回:
true如果当前读取操作应该被中止。- 参见:
-
clearAbortRequest
protected void clearAbortRequest()清除任何先前的中止请求。调用此方法后,abortRequested将返回false。- 参见:
-
addIIOReadWarningListener
将IIOReadWarningListener添加到已注册的警告监听器列表中。如果listener是null,则不会抛出任何异常,也不会采取任何操作。发送给给定监听器的消息将被本地化,如果可能的话,以匹配当前的Locale。如果未设置Locale,警告消息可能会根据读者认为合适的方式进行本地化。- 参数:
listener- 要注册的IIOReadWarningListener。- 参见:
-
removeIIOReadWarningListener
从已注册的错误监听器列表中删除IIOReadWarningListener。如果监听器之前未注册,或者如果listener是null,则不会抛出任何异常,也不会采取任何操作。- 参数:
listener- 要取消注册的 IIOReadWarningListener。- 参见:
-
removeAllIIOReadWarningListeners
public void removeAllIIOReadWarningListeners()删除所有当前注册的IIOReadWarningListener对象。默认实现将
warningListeners和warningLocales实例变量设置为null。 -
addIIOReadProgressListener
将IIOReadProgressListener添加到已注册进度监听器列表中。如果listener是null,则不会抛出任何异常,也不会采取任何操作。- 参数:
listener- 要注册的 IIOReadProgressListener。- 参见:
-
removeIIOReadProgressListener
从已注册进度监听器列表中删除IIOReadProgressListener。如果监听器之前未注册,或者如果listener是null,则不会抛出任何异常,也不会采取任何操作。- 参数:
listener- 要注销的 IIOReadProgressListener。- 参见:
-
removeAllIIOReadProgressListeners
public void removeAllIIOReadProgressListeners()删除所有当前注册的IIOReadProgressListener对象。默认实现将
progressListeners实例变量设置为null。 -
addIIOReadUpdateListener
将IIOReadUpdateListener添加到已注册的更新监听器列表中。如果listener是null,则不会抛出任何异常,也不会采取任何操作。当图像和缩略图被解码时,收听者将收到像素更新的通知,包括渐进通道的开始和结束。如果不存在更新监听,则读者可以选择对目标图像和/或缩略图的像素执行较少的更新,这可能会导致更有效的解码。
例如,在渐进式 JPEG 解码中,每个通道都包含对一组系数的更新,如果存在听众,则必须将其转换为像素值并转换为每个通道的 RGB 颜色空间。如果没有收听者,则可以简单地累加系数并且仅对最终结果进行一次变换和颜色转换。
无论是否执行中间更新,解码的最终结果都是相同的。因此,如果只需要最终图像,最好不要注册任何
IIOReadUpdateListeners。通常,当通过与本地 CPU 处理相比非常慢的网络连接获取图像时,渐进式更新最有效;通过快速连接,渐进式更新实际上可能会减慢图像的显示速度。- 参数:
listener- 要注册的 IIOReadUpdateListener。- 参见:
-
removeIIOReadUpdateListener
从已注册更新监听器列表中删除IIOReadUpdateListener。如果监听器之前未注册,或者如果listener是null,则不会抛出任何异常,也不会采取任何操作。- 参数:
listener- 要注销的 IIOReadUpdateListener。- 参见:
-
removeAllIIOReadUpdateListeners
public void removeAllIIOReadUpdateListeners()删除所有当前注册的IIOReadUpdateListener对象。默认实现将
updateListeners实例变量设置为null。 -
processSequenceStarted
protected void processSequenceStarted(int minIndex) 通过调用它们的sequenceStarted方法向所有已注册的IIOReadProgressListener广播一系列图像读取的开始。为方便起见,子类可以使用此方法。- 参数:
minIndex- 正在读取的最低索引。
-
processSequenceComplete
protected void processSequenceComplete()通过调用它们的sequenceComplete方法向所有已注册的IIOReadProgressListener广播图像读取序列的完成。为方便起见,子类可以使用此方法。 -
processImageStarted
protected void processImageStarted(int imageIndex) 通过调用它们的imageStarted方法向所有已注册的IIOReadProgressListener广播图像读取的开始。为方便起见,子类可以使用此方法。- 参数:
imageIndex- 要读取的图像的索引。
-
processImageProgress
protected void processImageProgress(float percentageDone) 通过调用它们的imageProgress方法向所有已注册的IIOReadProgressListener广播当前图像完成百分比。为方便起见,子类可以使用此方法。- 参数:
percentageDone- 当前完成百分比,如float。
-
processImageComplete
protected void processImageComplete()通过调用它们的imageComplete方法向所有注册的IIOReadProgressListener广播图像读取的完成。为方便起见,子类可以使用此方法。 -
processThumbnailStarted
protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) 通过调用它们的thumbnailStarted方法向所有已注册的IIOReadProgressListener广播缩略图读取的开始。为方便起见,子类可以使用此方法。- 参数:
imageIndex- 与缩略图关联的图像索引。thumbnailIndex- 缩略图的索引。
-
processThumbnailProgress
protected void processThumbnailProgress(float percentageDone) 通过调用它们的thumbnailProgress方法向所有已注册的IIOReadProgressListener广播当前缩略图完成百分比。为方便起见,子类可以使用此方法。- 参数:
percentageDone- 当前完成百分比,如float。
-
processThumbnailComplete
protected void processThumbnailComplete()通过调用它们的thumbnailComplete方法向所有已注册的IIOReadProgressListener广播缩略图读取的完成。为方便起见,子类可以使用此方法。 -
processReadAborted
protected void processReadAborted()通过调用它们的readAborted方法向所有已注册的IIOReadProgressListener广播读取已中止。为方便起见,子类可以使用此方法。 -
processPassStarted
protected void processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) 通过调用它们的passStarted方法向所有已注册的IIOReadUpdateListener广播渐进传递的开始。为方便起见,子类可以使用此方法。- 参数:
theImage- 正在更新的BufferedImage。pass- 当前通道的索引,从 0 开始。minPass- 将被解码的第一遍的索引。maxPass- 将被解码的最后一遍的索引。minX- 通道中包含的左上角像素的 X 坐标。minY- 通道中包含的左上角像素的 X 坐标。periodX- 像素之间的水平分隔。periodY- 像素之间的垂直分隔。bands- 一个int数组,指示目标的受影响波段集。
-
processImageUpdate
protected void processImageUpdate(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) 通过调用它们的imageUpdate方法向所有已注册的IIOReadUpdateListener广播一组样本的更新。为方便起见,子类可以使用此方法。- 参数:
theImage- 正在更新的BufferedImage。minX- 通道中包含的左上角像素的 X 坐标。minY- 通道中包含的左上角像素的 X 坐标。width- 正在更新的区域的总宽度,包括在periodX > 1时被跳过的像素。height- 正在更新的区域的总高度,包括在periodY > 1时被跳过的像素。periodX- 像素之间的水平分隔。periodY- 像素之间的垂直分隔。bands- 一个int数组,指示目标的受影响波段集。
-
processPassComplete
通过调用它们的passComplete方法向所有已注册的IIOReadUpdateListener广播渐进传递的结束。为方便起见,子类可以使用此方法。- 参数:
theImage- 正在更新的BufferedImage。
-
processThumbnailPassStarted
protected void processThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) 通过调用它们的thumbnailPassStarted方法向所有已注册的IIOReadUpdateListener广播缩略图渐进传递的开始。为方便起见,子类可以使用此方法。- 参数:
theThumbnail- 正在更新的BufferedImage缩略图。pass- 当前通道的索引,从 0 开始。minPass- 将被解码的第一遍的索引。maxPass- 将被解码的最后一遍的索引。minX- 通道中包含的左上角像素的 X 坐标。minY- 通道中包含的左上角像素的 X 坐标。periodX- 像素之间的水平分隔。periodY- 像素之间的垂直分隔。bands- 一个int数组,指示目标的受影响波段集。
-
processThumbnailUpdate
protected void processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) 通过调用它们的thumbnailUpdate方法,将缩略图中的一组样本的更新广播到所有已注册的IIOReadUpdateListeners。为方便起见,子类可以使用此方法。- 参数:
theThumbnail- 正在更新的BufferedImage缩略图。minX- 通道中包含的左上角像素的 X 坐标。minY- 通道中包含的左上角像素的 X 坐标。width- 正在更新的区域的总宽度,包括在periodX > 1时被跳过的像素。height- 正在更新的区域的总高度,包括在periodY > 1时被跳过的像素。periodX- 像素之间的水平分隔。periodY- 像素之间的垂直分隔。bands- 一个int数组,指示目标的受影响波段集。
-
processThumbnailPassComplete
通过调用它们的thumbnailPassComplete方法向所有已注册的IIOReadUpdateListener广播缩略图渐进传递的结束。为方便起见,子类可以使用此方法。- 参数:
theThumbnail- 正在更新的BufferedImage缩略图。
-
processWarningOccurred
通过调用它们的warningOccurred方法向所有已注册的IIOReadWarningListener广播一条警告消息。为方便起见,子类可以使用此方法。- 参数:
warning- 要发送的警告消息。- 抛出:
IllegalArgumentException- 如果warning是null。
-
processWarningOccurred
通过使用从ResourceBundle获取的字符串调用它们的warningOccurred方法,向所有已注册的IIOReadWarningListener广播本地化警告消息。为方便起见,子类可以使用此方法。- 参数:
baseName- 一组包含本地化警告消息的ResourceBundle的基本名称。keyword- 用于在ResourceBundle集合中索引警告消息的关键字。- 抛出:
IllegalArgumentException- 如果baseName是null。IllegalArgumentException- 如果keyword是null。IllegalArgumentException- 如果找不到合适的ResourceBundle。IllegalArgumentException- 如果在位于的ResourceBundle中找不到命名资源。IllegalArgumentException- 如果从ResourceBundle检索到的对象不是String。
-
reset
public void reset()将ImageReader恢复到其初始状态。默认实现调用
setInput(null, false)、setLocale(null)、removeAllIIOReadUpdateListeners()、removeAllIIOReadWarningListeners()、removeAllIIOReadProgressListeners()和clearAbortRequest。 -
dispose
public void dispose()允许释放此对象持有的任何资源。在调用此方法之后调用任何其他方法(finalize除外)的结果是未定义的。当应用程序知道他们将不再使用此
ImageReader时,调用此方法很重要。否则,读者可能会无限期地继续持有资源。超类中此方法的默认实现不执行任何操作。子类实现应确保释放所有资源,尤其是本机资源。
-
getSourceRegion
读者可以使用一种实用方法来计算应读取的源图像区域,同时考虑所提供的ImageReadParam中的任何源区域和子采样偏移设置。 not 考虑了实际的子采样因子、目标大小和目标偏移量,因此必须进行进一步的裁剪。computeRegions方法执行所有必要的裁剪。- 参数:
param- 正在使用的ImageReadParam,或null。srcWidth- 源图像的宽度。srcHeight- 源图像的高度。- 返回:
-
源区域为
Rectangle。
-
computeRegions
protected static void computeRegions(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion) 计算源感兴趣区域和目标感兴趣区域,同时考虑源图像的宽度和高度、可选的目标图像和可选的ImageReadParam。源区域以整个源图像开始。然后将其剪辑到ImageReadParam中指定的源区域(如果指定的话)。如果任一目标偏移量为负,则裁剪源区域,使其左上角与目标图像的左上角重合,同时考虑子采样。然后将结果裁剪到右侧和底部的目标图像(如果指定了一个),同时考虑子采样和目标偏移量。
类似地,目标区域从源图像开始,转换为
ImageReadParam中给出的目标偏移量(如果有),最后裁剪到目标图像(如果有)。如果源区域或目标区域最终的宽度或高度为 0,则会抛出
IllegalArgumentException。如果只需要源剪辑,则可以使用
getSourceRegion>方法。- 参数:
param- 一个ImageReadParam或null。srcWidth- 源图像的宽度。srcHeight- 源图像的高度。image- 将成为目标图像的BufferedImage或null。srcRegion- 一个Rectangle将填充感兴趣的源区域。destRegion- 一个Rectangle将填充感兴趣的目标区域。- 抛出:
IllegalArgumentException- 如果srcRegion是null。IllegalArgumentException- 如果dstRegion是null。IllegalArgumentException- 如果生成的源或目标区域为空。
-
checkReadParamBandSettings
protected static void checkReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands) 读者可以使用一种实用方法来测试ImageReadParam的源和目标波段设置的有效性。一旦读者知道输入流中存在的源图像的波段数和正在写入的目标图像的波段数,就可以调用此方法。该方法使用
getSourceBands和getDestinationBands方法从参数中检索源和目标波段设置数组(或者如果param是null则认为它们是null)。如果源波段设置数组为null,则认为它等于数组{ 0, 1, ..., numSrcBands - 1 },目标波段设置数组也类似。然后该方法测试两个数组的长度是否相等,并且两个数组都不包含大于最大可用波段索引的值。
任何失败都会导致抛出
IllegalArgumentException;成功导致方法静默返回。- 参数:
param-ImageReadParam用于读取图像。numSrcBands- 输入源中存在的图像波段数。numDstBands- 正在写入的目标图像中的波段数。- 抛出:
IllegalArgumentException- 如果param包含源和/或目标带子集的无效规范。
-
getDestination
protected static BufferedImage getDestination(ImageReadParam param, Iterator <ImageTypeSpecifier > imageTypes, int width, int height) throws IIOException 返回应写入解码像素数据的BufferedImage。图像是通过检查提供的ImageReadParam确定的,如果它是非null;如果它的getDestination方法返回一个非null值,则只返回该图像。否则,将调用param.getDestinationType方法来确定是否已指定特定图像类型。如果是这样,返回的ImageTypeSpecifier在检查它是否等于imageTypes中包含的其中一个后使用。如果
param是null或上述步骤没有产生图像或ImageTypeSpecifier,则使用从imageTypes参数获得的第一个值。通常,调用者会将imageTypes设置为getImageTypes(imageIndex)的值。接下来,通过调用
computeRegions确定图像的尺寸。被解码图像的实际宽度和高度作为width和height参数传入。- 参数:
param- 用于获取目标图像或图像类型的ImageReadParam,或null。imageTypes-IteratorofImageTypeSpecifiers 指示合法图像类型,默认值优先。width- 正在解码的图像或图块的真实宽度。height- 正在解码的图像或图块的真实宽度。- 返回:
-
应写入解码像素数据的
BufferedImage。 - 抛出:
IIOException- 如果param指定的ImageTypeSpecifier与imageTypes中的任何合法值不匹配。IllegalArgumentException- 如果imageTypes是null或为空,或者如果从中检索到不是ImageTypeSpecifier类型的对象。IllegalArgumentException- 如果生成的图像的宽度或高度小于 1。IllegalArgumentException- 如果width和height的乘积大于Integer.MAX_VALUE。
-