ImageReader
对象通常由特定格式的服务提供程序接口(SPI)类实例化。服务提供程序类(例如,ImageReaderSpi
的实例)会注册到IIORegistry
,后者用于格式识别和显示可用格式的读取器和写入器。
当设置输入源(使用setInput
方法)时,可以将其标记为“仅向前搜索”。此设置意味着仅按顺序读取输入源中包含的图像,可能允许读取器避免缓存包含先前已读取图像相关数据的输入部分。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected Locale[]
一个Locale
数组,可用于本地化警告消息,如果不支持本地化,则为null
。protected boolean
如果当前输入源已被标记为允许通过setInput
忽略元数据,则返回true
。protected Object
由setInput
设置并由getInput
检索的ImageInputStream
或其他Object
。protected Locale
用于本地化的当前Locale
,如果未设置,则为null
。protected int
用于阅读的最小有效索引,初始值为0。protected ImageReaderSpi
实例化此对象的ImageReaderSpi
,如果其身份未知或不存在,则为null
。protected List
<IIOReadProgressListener> 当前注册的IIOReadProgressListener
列表,默认初始化为null
,与空List
同义。protected boolean
如果当前输入源已被标记为仅允许向前搜索,则返回true
。protected List
<IIOReadUpdateListener> 当前注册的IIOReadUpdateListener
列表,默认初始化为null
,与空List
同义。protected List
<IIOReadWarningListener> 当前注册的IIOReadWarningListener
列表,默认初始化为null
,与空List
同义。与每个当前注册的IIOReadWarningListener
关联的Locale
列表,默认初始化为null
,与空List
同义。 -
Constructor Summary
ModifierConstructorDescriptionprotected
ImageReader
(ImageReaderSpi originatingProvider) 构造一个ImageReader
并将其originatingProvider
字段设置为提供的值。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
abort()
请求中止任何当前读取操作。protected boolean
自读取器实例化以来或调用clearAbortRequest
以来,如果已发出中止当前读取操作的请求,则返回true
。void
将IIOReadProgressListener
添加到已注册进度侦听器列表中。void
将IIOReadUpdateListener
添加到已注册更新侦听器列表中。void
将IIOReadWarningListener
添加到已注册警告侦听器列表中。boolean
如果此插件支持仅读取像素数据的Raster
,则返回true
。protected static void
checkReadParamBandSettings
(ImageReadParam param, int numSrcBands, int numDstBands) 读取器可能使用的实用方法,用于测试ImageReadParam
的源和目标波段设置的有效性。protected void
清除任何先前的中止请求。protected static void
computeRegions
(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion) 计算源图像的感兴趣区域和目标感兴趣区域,考虑源图像的宽度和高度、可选目标图像以及可选的ImageReadParam
。void
dispose()
允许释放此对象持有的任何资源。float
getAspectRatio
(int imageIndex) 返回给定图像的宽度除以高度的纵横比作为float
。Locale[]
返回一个Locale
数组,可用于本地化警告侦听器和压缩设置。返回适用于此格式的默认ImageReadParam
对象。protected static BufferedImage
getDestination
(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height) 返回应将解码的像素数据写入的BufferedImage
。返回输入源的格式的String
标识。abstract int
getHeight
(int imageIndex) 返回输入源中给定图像的像素高度。abstract IIOMetadata
getImageMetadata
(int imageIndex) 返回包含与给定图像关联的元数据的IIOMetadata
对象,如果读取器不支持读取元数据、设置为忽略元数据或没有可用元数据,则返回null
。getImageMetadata
(int imageIndex, String formatName, Set<String> nodeNames) 返回表示与给定图像关联的元数据的IIOMetadata
对象,如果读取器不支持读取元数据或没有可用元数据,则返回null
。abstract Iterator
<ImageTypeSpecifier> getImageTypes
(int imageIndex) 返回包含给定图像可能解码为的图像类型的ImageTypeSpecifiers
形式的Iterator
。getInput()
返回先前设置为输入源的ImageInputStream
或其他Object
。返回当前设置的Locale
,如果未设置,则返回null
。int
返回读取图像、缩略图或图像元数据的最低有效索引。abstract int
getNumImages
(boolean allowSearch) 返回当前输入源中可用的图像数量(不包括缩略图)。int
getNumThumbnails
(int imageIndex) 返回与给定图像关联的缩略图预览图像的数量。返回在构造函数中传递的ImageReaderSpi
。getRawImageType
(int imageIndex) 返回指示最接近表示图像的“原始”内部格式的SampleModel
和ColorModel
的ImageTypeSpecifier
。protected static Rectangle
getSourceRegion
(ImageReadParam param, int srcWidth, int srcHeight) 读取器可能使用的实用方法,用于计算应读取的源图像区域,考虑到提供的ImageReadParam
中的源区域和子采样偏移设置。abstract IIOMetadata
返回表示与输入源整体关联的元数据的IIOMetadata
对象(即,不与任何特定图像关联),如果读取器不支持读取元数据、设置为忽略元数据或没有可用元数据,则返回null
。getStreamMetadata
(String formatName, Set<String> nodeNames) 返回表示与输入源整体关联的元数据的IIOMetadata
对象(即,不与任何特定图像关联)。int
getThumbnailHeight
(int imageIndex, int thumbnailIndex) 返回由ImageIndex
索引的图像关联的thumbnailIndex
索引的缩略图预览图像的高度。int
getThumbnailWidth
(int imageIndex, int thumbnailIndex) 返回由ImageIndex
索引的图像关联的thumbnailIndex
索引的缩略图预览图像的宽度。int
getTileGridXOffset
(int imageIndex) 返回给定图像中瓦片(0, 0)的左上角的X坐标。int
getTileGridYOffset
(int imageIndex) 返回给定图像中瓦片(0, 0)的左上角的Y坐标。int
getTileHeight
(int imageIndex) 返回给定图像中瓦片的高度。int
getTileWidth
(int imageIndex) 返回给定图像中瓦片的宽度。abstract int
getWidth
(int imageIndex) 返回输入源中给定图像的像素宽度。boolean
hasThumbnails
(int imageIndex) 如果给定图像关联有缩略图预览图像,则返回true
。boolean
如果当前输入源已通过将true
作为ignoreMetadata
参数传递给setInput
方法而被标记为允许忽略元数据,则返回true
。boolean
isImageTiled
(int imageIndex) 如果给定图像组织成瓦片,即等大小且不重叠的矩形,则返回true
。boolean
isRandomAccessEasy
(int imageIndex) 如果给定图像的存储格式对像素的随机访问没有固有障碍,则返回true
。boolean
如果当前输入源已通过将true
作为seekForwardOnly
参数传递给setInput
方法而被标记为仅向前搜索,则返回true
。protected void
通过调用它们的imageComplete
方法向所有已注册的IIOReadProgressListener
广播图像读取的完成。protected void
processImageProgress
(float percentageDone) 通过调用它们的imageProgress
方法向所有已注册的IIOReadProgressListener
广播图像完成的当前百分比。protected void
processImageStarted
(int imageIndex) 通过调用它们的imageStarted
方法向所有已注册的IIOReadProgressListener
广播图像读取的开始。protected void
processImageUpdate
(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) 通过调用它们的imageUpdate
方法向所有已注册的IIOReadUpdateListener
广播一组样本的更新。protected void
processPassComplete
(BufferedImage theImage) 通过调用它们的passComplete
方法向所有已注册的IIOReadUpdateListener
广播渐进式传递的完成。protected void
processPassStarted
(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 void
processSequenceStarted
(int minIndex) 通过调用它们的sequenceStarted
方法向所有已注册的IIOReadProgressListener
广播图像读取序列的开始。protected void
通过调用它们的thumbnailComplete
方法向所有已注册的IIOReadProgressListener
广播缩略图读取的完成。protected void
processThumbnailPassComplete
(BufferedImage theThumbnail) 通过调用它们的thumbnailPassComplete
方法向所有已注册的IIOReadUpdateListener
广播缩略图渐进式传递的完成。protected void
processThumbnailPassStarted
(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) 通过调用它们的thumbnailPassStarted
方法向所有已注册的IIOReadUpdateListener
广播缩略图渐进式传递的开始。protected void
processThumbnailProgress
(float percentageDone) 广播当前缩略图完成百分比给所有注册的IIOReadProgressListener
,通过调用它们的thumbnailProgress
方法。protected void
processThumbnailStarted
(int imageIndex, int thumbnailIndex) 广播缩略图读取的开始给所有注册的IIOReadProgressListener
,通过调用它们的thumbnailStarted
方法。protected void
processThumbnailUpdate
(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) 广播缩略图图像中一组样本的更新给所有注册的IIOReadUpdateListener
,通过调用它们的thumbnailUpdate
方法。protected void
processWarningOccurred
(String warning) 通过调用它们的warningOccurred
方法,向所有注册的IIOReadWarningListener
广播警告消息。protected void
processWarningOccurred
(String baseName, String keyword) 通过从ResourceBundle
中获取的字符串,通过调用它们的warningOccurred
方法,向所有注册的IIOReadWarningListener
广播本地化的警告消息。read
(int imageIndex) 读取由imageIndex
索引的图像,并将其作为完整的BufferedImage
返回,使用默认的ImageReadParam
。abstract BufferedImage
read
(int imageIndex, ImageReadParam param) 读取由imageIndex
索引的图像,并将其作为完整的BufferedImage
返回,使用提供的ImageReadParam
。readAll
(int imageIndex, ImageReadParam param) 读取由imageIndex
索引的图像,并返回一个包含图像、缩略图和相关图像元数据的IIOImage
,使用提供的ImageReadParam
。readAll
(Iterator<? extends ImageReadParam> params) 返回一个包含所有图像、缩略图和元数据的IIOImage
对象的Iterator
,从输入源开始的索引由getMinIndex
给出。readAsRenderedImage
(int imageIndex, ImageReadParam param) 返回包含由imageIndex
索引的图像内容的RenderedImage
对象。boolean
如果此阅读器理解的图像格式支持与之关联的缩略图预览图像,则返回true
。readRaster
(int imageIndex, ImageReadParam param) 返回一个包含来自图像流的原始像素数据的新Raster
对象,没有应用任何颜色转换。readThumbnail
(int imageIndex, int thumbnailIndex) 返回由ImageIndex
索引的图像关联的thumbnailIndex
缩略图预览图像作为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
。void
reset()
将ImageReader
恢复到初始状态。void
将输入源设置为给定的ImageInputStream
或其他Object
。void
将输入源设置为给定的ImageInputStream
或其他Object
。void
将输入源设置为给定的ImageInputStream
或其他Object
。void
将此ImageReader
的当前Locale
设置为给定值。
-
Field Details
-
originatingProvider
实例化此对象的ImageReaderSpi
,如果其身份未知或不存在,则返回null
。默认情况下,它初始化为null
。 -
input
由setInput
设置的ImageInputStream
或其他Object
,由getInput
检索。默认情况下,它初始化为null
。 -
seekForwardOnly
protected boolean seekForwardOnly如果通过setInput
将当前输入源标记为仅允许向前搜索,则返回true
。默认情况下,该值为false
。- 参见:
-
ignoreMetadata
protected boolean ignoreMetadata如果通过setInput
将当前输入源标记为允许忽略元数据,则返回true
。默认情况下,该值为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
是同义词。
-
-
Constructor Details
-
ImageReader
构造一个ImageReader
并将其originatingProvider
字段设置为提供的值。使用扩展的子类应该提供一个签名为
(ImageReaderSpi,Object)
的构造函数,以便检索扩展对象。如果扩展对象不合适,则应抛出IllegalArgumentException
。- 参数:
-
originatingProvider
- 调用此构造函数的ImageReaderSpi
,或null
。
-
-
Method Details
-
getFormatName
返回标识输入源格式的String
。默认实现返回
originatingProvider.getFormatNames()[0]
。可能没有原始服务提供者的实现,或者希望使用不同的命名策略,应覆盖此方法。- 返回:
-
格式名称,作为
String
。 - 抛出:
-
IOException
- 如果从输入源读取信息时发生错误。
-
getOriginatingProvider
返回在构造函数中传递的ImageReaderSpi
。请注意,此值可能为null
。- 返回:
-
一个
ImageReaderSpi
,或null
。 - 参见:
-
setInput
将输入源设置为给定的ImageInputStream
或其他Object
。必须在使用任何查询或读取方法之前设置输入源。如果input
为null
,则将删除任何当前设置的输入源。在任何情况下,将初始化minIndex
的值为0。seekForwardOnly
参数控制getMinIndex
返回的值是否会随着每个图像(或缩略图或图像元数据)的读取而增加。如果seekForwardOnly
为true,则调用read(index)
将在index < this.minIndex
时抛出IndexOutOfBoundsException
;否则,minIndex
的值将设置为index
。如果seekForwardOnly
为false
,则无论读取操作如何,minIndex
的值将始终保持为0。如果将
ignoreMetadata
参数设置为true
,允许阅读器忽略在读取过程中遇到的任何元数据。随后对getStreamMetadata
和getImageMetadata
方法的调用可能返回null
,并且从readAll
返回的IIOImage
可能从其getMetadata
方法返回null
。设置此参数可能使阅读器更有效地工作。阅读器可以选择忽略此设置并正常返回元数据。子类应注意删除基于先前流的缓存信息,例如标头信息或部分解码的图像数据。
除了
ImageInputStream
之外的一般Object
的使用是为了与直接与捕获设备或成像协议交互的阅读器。合法类的集合由阅读器的服务提供者的getInputTypes
方法进行广告;大多数阅读器将返回一个只包含ImageInputStream.class
的单元素数组,以指示它们仅接受ImageInputStream
。默认实现将
input
参数与originatingProvider.getInputTypes()
返回的列表进行检查,并在参数不是列表中类的实例时失败。如果原始提供程序设置为null
,则只有当输入为ImageInputStream
时才接受。- 参数:
-
input
- 用于未来解码的ImageInputStream
或其他Object
。 -
seekForwardOnly
- 如果为true
,则只能从此输入源按升序读取图像和元数据。 -
ignoreMetadata
- 如果为true
,则在读取过程中可以忽略元数据。 - 抛出:
-
IllegalArgumentException
- 如果input
不是由原始服务提供程序的getInputTypes
方法返回的类的实例,或者不是ImageInputStream
。 - 参见:
-
setInput
设置要使用的输入源为给定的ImageInputStream
或其他Object
。必须在使用任何查询或读取方法之前设置输入源。如果input
为null
,则将删除任何当前设置的输入源。在任何情况下,minIndex
的值将初始化为0。seekForwardOnly
参数控制getMinIndex
返回的值是否会随着每次读取图像(或缩略图或图像元数据)而增加。如果seekForwardOnly
为true,则调用read(index)
将抛出IndexOutOfBoundsException
,如果index < 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
参数的Locale
数组,或null
。
-
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
,如果allowSearch
为false
且需要搜索,则返回-1
。 - 抛出:
-
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
返回一个包含可能用于解码给定图像的图像类型ImageTypeSpecifiers
的Iterator
。至少会返回一个合法的图像类型。- 参数:
-
imageIndex
- 要检索
的图像的索引。 - 返回:
-
包含至少一个建议的用于解码当前给定图像的图像类型
ImageTypeSpecifier
的Iterator
。 - 抛出:
-
IllegalStateException
- 如果未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果从输入源读取格式信息时发生错误。 - 参见:
-
getDefaultReadParam
返回适用于该格式的默认ImageReadParam
对象。所有子类应为所有参数定义一组默认值,并在此调用时返回它们。可以在设置输入源之前调用此方法。ImageReadParam
对象,不允许源缩放(即,返回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
索引的图像,并使用默认的ImageReadParam
将其作为完整的BufferedImage
返回。这是一个方便的方法,调用read(imageIndex, null)
。返回的图像将根据从
getImageTypes
返回的第一个ImageTypeSpecifier
进行格式化。任何注册的
IIOReadProgressListener
对象将通过调用其imageStarted
方法进行通知,随后在读取过程中调用其imageProgress
方法。最后将调用其imageComplete
方法。在读取过程中,IIOReadUpdateListener
对象可能会在其他时间更新,因为像素被解码。最后,IIOReadWarningListener
对象将在解码过程中发生任何非致命警告时收到通知。- 参数:
-
imageIndex
- 要检索的图像的索引。 - 返回:
-
作为
BufferedImage
的所需图像部分。 - 抛出:
-
IllegalStateException
- 如果未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果在读取过程中发生错误。
-
read
读取由imageIndex
索引的图像,并使用提供的ImageReadParam
将其作为完整的BufferedImage
返回。实际返回的
BufferedImage
将根据getDestination
方法定义的算法选择。任何注册的
IIOReadProgressListener
对象将通过调用其imageStarted
方法进行通知,随后在读取过程中调用其imageProgress
方法。最后将调用其imageComplete
方法。在读取过程中,IIOReadUpdateListener
对象可能会在其他时间更新,因为像素被解码。最后,IIOReadWarningListener
对象将在解码过程中发生任何非致命警告时收到通知。要读取的源波段和要写入的目标波段集是通过调用提供的
ImageReadParam
上的getSourceBands
和getDestinationBands
来确定的。如果这些方法返回的数组的长度不同,源波段集包含大于最大可用源索引的索引,或目标波段集包含大于最大合法目标索引的索引,则会抛出IllegalArgumentException
。如果提供的
ImageReadParam
包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),则这些值将被忽略。- 参数:
-
imageIndex
- 要检索的图像的索引。 -
param
- 用于控制读取过程的ImageReadParam
,或null
。 - 返回:
-
作为
BufferedImage
的所需图像部分。 - 抛出:
-
IllegalStateException
- 如果未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IllegalArgumentException
- 如果由param.getSourceBands
和param.getDestinationBands
指定的源和目标波段集在长度上不同或包含超出范围的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 如果在读取过程中发生错误。
-
readAll
读取由imageIndex
索引的图像,并使用提供的ImageReadParam
将其作为包含图像、缩略图和关联图像元数据的IIOImage
返回。由返回的
IIOImage
引用的实际BufferedImage
将根据getDestination
方法定义的算法选择。任何注册的
IIOReadProgressListener
对象将通过调用其imageStarted
方法进行通知,随后在读取过程中调用其imageProgress
方法。最后将调用其imageComplete
方法。在读取过程中,IIOReadUpdateListener
对象可能会在其他时间更新,因为像素被解码。最后,IIOReadWarningListener
对象将在解码过程中发生任何非致命警告时收到通知。要读取的源波段和要写入的目标波段集是通过调用提供的
ImageReadParam
上的getSourceBands
和getDestinationBands
来确定的。如果这些方法返回的数组的长度不同,源波段集包含大于最大可用源索引的索引,或目标波段集包含大于最大合法目标索引的索引,则会抛出IllegalArgumentException
。无论区域设置如何,缩略图将完整返回。
如果提供的
ImageReadParam
包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),这些值将被忽略。- 参数:
-
imageIndex
- 要检索的图像的索引。 -
param
- 用于控制读取过程的ImageReadParam
,或null
。 - 返回:
-
包含所需图像部分、一组缩略图和关联图像元数据的
IIOImage
。 - 抛出:
-
IllegalStateException
- 如果未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IllegalArgumentException
- 如果由param.getSourceBands
和param.getDestinationBands
指定的源和目标波段集在长度上不同或包含超出范围的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 如果在读取过程中发生错误。
-
readAll
返回一个包含所有图像、缩略图和元数据的Iterator
,从输入源的索引开始,索引由getMinIndex
给出,以IIOImage
对象的形式返回。提供了一个包含ImageReadParam
对象的Iterator
;每从输入源读取一个图像,就会消耗一个元素,直到没有更多图像可用为止。如果读取参数Iterator
用尽,但输入源仍有更多图像可用,则对剩余图像使用默认读取参数。如果
params
为null
,则所有图像将使用默认读取参数。由返回的
IIOImage
引用的实际BufferedImage
将使用getDestination
方法定义的算法选择。任何注册的
IIOReadProgressListener
对象将通过调用它们的sequenceStarted
方法进行通知。然后,对于每个解码的图像,将调用imageStarted
,随着读取的进行,将调用imageProgress
,最后调用imageComplete
。在最后一个图像解码后,将调用sequenceComplete
方法。在读取过程中,IIOReadUpdateListener
对象可能在其他时间更新,因为像素被解码。最后,IIOReadWarningListener
对象将在解码过程中接收到任何非致命警告的通知。要读取的源波段和要写入的目标波段集由在提供的
ImageReadParam
上调用getSourceBands
和getDestinationBands
来确定。如果这些方法返回的数组的长度不同,源波段集包含一个大于最大可用源索引的索引,或目标波段集包含一个大于最大合法目标索引的索引,则会抛出IllegalArgumentException
。无论区域设置如何,缩略图都将完整返回。
如果任何提供的
ImageReadParam
包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。- 参数:
-
params
- 包含ImageReadParam
对象的Iterator
。 - 返回:
-
代表输入源内容的
IIOImage
的Iterator
。 - 抛出:
-
IllegalStateException
- 如果未设置输入源。 -
IllegalArgumentException
- 如果params
的任何非null
元素不是ImageReadParam
。 -
IllegalArgumentException
- 如果由param.getSourceBands
和param.getDestinationBands
指定的源和目标波段集的长度不同或包含超出范围的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 如果在读取过程中发生错误。 - 参见:
-
canReadRaster
public boolean canReadRaster()如果此插件支持仅读取像素数据的Raster
,则返回true
。如果此方法返回false
,则对readRaster
或readTileRaster
的调用将抛出UnsupportedOperationException
异常。默认实现返回
false
。- 返回:
-
如果此插件支持读取原始
Raster
,则返回true
。 - 参见:
-
readRaster
返回一个包含来自图像流的原始像素数据的新Raster
对象,不应用任何颜色转换。应用程序必须通过其他方式确定如何解释像素数据。提供的ImageReadParam
对象中的任何目标或图像类型参数都将被忽略,但所有其他参数将与read
方法中完全相同,除了任何目标偏移量将用作逻辑偏移而不是物理偏移。返回的Raster
的大小始终为裁剪到实际图像的源区域的大小。流本身中的逻辑偏移将被忽略。此方法允许通常应用颜色转换的格式(例如JPEG)和通常没有关联色彩空间的格式(例如遥感或医学成像数据)提供对原始像素数据的访问。
任何注册的
readUpdateListener
都将被忽略,因为没有BufferedImage
,但所有其他监听器将与read
方法完全相同。如果
canReadRaster()
返回false
,此方法将抛出UnsupportedOperationException
异常。如果提供的
ImageReadParam
包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。默认实现会抛出
UnsupportedOperationException
异常。- 参数:
-
imageIndex
- 要读取的图像的索引。 -
param
- 用于控制读取过程的ImageReadParam
,或null
。 - 返回:
-
作为
Raster
的图像的所需部分。 - 抛出:
-
UnsupportedOperationException
- 如果此插件不支持读取原始Raster
。 -
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
。默认实现检查是否支持读取
Raster
,如果支持,则在tileX
和tileY
为0时调用readRaster(imageIndex, null)
,否则抛出IllegalArgumentException
。- 参数:
-
imageIndex
- 要检索的图像的索引。 -
tileX
- 要检索的瓦片的列索引(从0开始)。 -
tileY
- 要检索的瓦片的行索引(从0开始)。 - 返回:
-
作为
Raster
的瓦片。 - 抛出:
-
UnsupportedOperationException
- 如果此插件不支持读取原始Raster
。 -
IllegalArgumentException
- 如果瓦片索引超出范围。 -
IllegalStateException
- 如果未设置输入源。 -
IndexOutOfBoundsException
- 如果imageIndex
超出范围。 -
IOException
- 读取过程中发生错误。 - 参见:
-
readAsRenderedImage
返回一个包含由imageIndex
索引的图像内容的RenderedImage
对象。默认情况下,返回的图像只是由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
。通过调用它们的
thumbnailStarted
、thumbnailProgress
和thumbnailComplete
方法,任何已注册的IIOReadProgressListener
对象都将收到通知。如果读取器不支持缩略图(
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颜色空间。如果没有监听器存在,则可以简单地累积系数,并且最终结果只需转换和颜色转换一次。
解码的最终结果无论是否执行中间更新都将相同。因此,如果只需要最终图像,则最好不要注册任何
IIOReadUpdateListener
。通常,在通过与本地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
- 包含在传输中的左上角像素的Y坐标。 -
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
- 包含在传输中的左上角像素的Y坐标。 -
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
- 包含在传输中的左上角像素的Y坐标。 -
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
方法向所有注册的IIOReadUpdateListener
广播缩略图图像的一组样本的更新。子类可以将此方法用作便利。- 参数:
-
theThumbnail
- 正在更新的BufferedImage
缩略图。 -
minX
- 包含在传输中的左上角像素的X坐标。 -
minY
- 包含在传输中的左上角像素的Y坐标。 -
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
中的源区域和子采样偏移设置。实际的子采样因子、目标大小和目标偏移量不被考虑,因此必须进一步进行裁剪。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
的源和目标波段设置的有效性。一旦读取器知道源图像在输入流中存在的波段数以及正在写入的目标图像的波段数,就可以调用此方法。该方法使用
param
使用getSourceBands
和getDestinationBands
方法从参数中检索源和目标波段设置数组(如果param
为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
,则通过检查其提供的ImageReadParam
确定图像;如果其getDestination
方法返回非null
值,则简单地返回该图像。否则,将调用param.getDestinationType
方法以确定是否指定了特定图像类型。如果是,则在检查其是否等于imageTypes
中包含的图像类型之一后使用返回的ImageTypeSpecifier
。如果
param
为null
或上述步骤未产生图像或ImageTypeSpecifier
,则使用从imageTypes
参数获取的第一个值。通常,调用者将imageTypes
设置为getImageTypes(imageIndex)
的值。接下来,通过调用
computeRegions
确定图像的尺寸。解码图像的实际宽度和高度作为width
和height
参数传递。- 参数:
-
param
- 用于获取目标图像或图像类型的ImageReadParam
,或null
。 -
imageTypes
- 包含合法图像类型的ImageTypeSpecifier
的Iterator
,默认为第一个。 -
width
- 正在解码的图像或图块的实际宽度。 -
height
- 正在解码的图像或图块的实际高度。 - 返回:
-
应写入解码像素数据的
BufferedImage
。 - 抛出:
-
IIOException
- 如果由param
指定的ImageTypeSpecifier
与imageTypes
中的任何合法值不匹配。 -
IllegalArgumentException
- 如果imageTypes
为null
或为空,或者如果从中检索到不是ImageTypeSpecifier
类型的对象。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IllegalArgumentException
- 如果width
和height
的乘积大于Integer.MAX_VALUE
。
-