- java.lang.Object
-
- javax.imageio.ImageReader
-
public abstract class ImageReaderextends Object
用于解析和解码图像的抽象超类。 此类必须由读取Java Image I / O框架上下文中的图像的类进行子类化。ImageReader
对象通常由特定格式的服务提供者接口(SPI)类实例化。 服务提供者类(例如,ImageReaderSpi
实例)在ImageReaderSpi
中注册,其用于格式识别和可用格式读取器和IIORegistry
器的呈现。设置输入源时(使用
setInput
方法),可以将其标记为“仅向前搜索”。 此设置意味着输入源中包含的图像将仅按顺序读取,可能允许读取器避免缓存包含与先前已读取的图像相关联的数据的输入部分。- 另请参见:
-
ImageWriter
,IIORegistry
,ImageReaderSpi
-
-
字段汇总
字段 变量和类型 字段 描述 protected Locale[]
availableLocales
的阵列Locale
其可以被用于定位的警告消息,或Snull
如果不支持定位。protected boolean
ignoreMetadata
true
如果当前输入源已标记为允许setInput
忽略元数据。protected Object
input
的ImageInputStream
或其他Object
通过setInput
,并通过检索getInput
。protected Locale
locale
目前Locale
用于定位,或null
如果没有设置。protected int
minIndex
读取的最小有效索引,最初为0。protected ImageReaderSpi
originatingProvider
该ImageReaderSpi
该实例化这个对象,或null
如果其身份未知或不存在。protected List<IIOReadProgressListener>
progressListeners
AList
当前注册IIOReadProgressListener
s,默认初始化为null
,与空List
同义。protected boolean
seekForwardOnly
true
如果当前输入源已被标记为仅允许通过setInput
进行前向搜索。protected List<IIOReadUpdateListener>
updateListeners
AList
当前已注册IIOReadUpdateListener
s,默认初始化为null
,与空List
同义。protected List<IIOReadWarningListener>
warningListeners
AList
当前注册IIOReadWarningListener
s,默认初始化为null
,与空List
同义。protected List<Locale>
warningLocales
List
的Locale
与每个当前注册的IIOReadWarningListener
相关联,默认情况下初始化为null
,这与空List
同义。
-
构造方法摘要
构造方法 变量 构造器 描述 protected
ImageReader(ImageReaderSpi originatingProvider)
构造一个ImageReader
并将其originatingProvider
字段设置为提供的值。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 void
abort()
请求中止任何当前读取操作。protected boolean
abortRequested()
如果自实例化读取器或clearAbortRequest
后已作出中止当前读取操作的请求,则返回true
。void
addIIOReadProgressListener(IIOReadProgressListener listener)
将IIOReadProgressListener
添加到已注册的进度监听器列表中。void
addIIOReadUpdateListener(IIOReadUpdateListener listener)
将IIOReadUpdateListener
添加到已注册的更新侦听器列表中。void
addIIOReadWarningListener(IIOReadWarningListener listener)
将IIOReadWarningListener
添加到已注册的警告侦听器列表中。boolean
canReadRaster()
如果此插件仅支持读取像素数据的Raster
,则返回true
。protected static void
checkReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands)
读者可以使用的实用方法来测试ImageReadParam
的源和目标波段设置的ImageReadParam
。protected void
clearAbortRequest()
清除任何先前的中止请求。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[]
getAvailableLocales()
返回一个Locale
的数组,可用于本地化警告侦听器和压缩设置。ImageReadParam
getDefaultReadParam()
返回适用于此格式的默认ImageReadParam
对象。protected static BufferedImage
getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height)
返回应写入解码像素数据的BufferedImage
。String
getFormatName()
返回标识输入源格式的String
。abstract int
getHeight(int imageIndex)
返回输入源中给定图像的高度(以像素为单位)。abstract IIOMetadata
getImageMetadata(int imageIndex)
返回一个IIOMetadata
与给定图像,或相关联的对象包含元数据null
如果读取器不支持读取元数据,被设置为忽略元数据,或者,如果没有元数据可用。IIOMetadata
getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames)
返回一个IIOMetadata
表示与给定图像,或相关联的元数据对象null
如果读取器不支持读取元数据或没有可用的。abstract Iterator<ImageTypeSpecifier>
getImageTypes(int imageIndex)
返回Iterator
其中包含可以解码给定图像的可能图像类型,形式为ImageTypeSpecifiers
。Object
getInput()
返回先前设置为输入源的ImageInputStream
或其他Object
。Locale
getLocale()
返回当前设置Locale
,或null
如果没有设置。int
getMinIndex()
返回用于读取图像,缩略图或图像元数据的最低有效索引。abstract int
getNumImages(boolean allowSearch)
返回当前输入源可用的图像数,不包括缩略图。int
getNumThumbnails(int imageIndex)
返回与给定图像关联的缩略图预览图像的数量。ImageReaderSpi
getOriginatingProvider()
返回在构造函数中传入的ImageReaderSpi
。ImageTypeSpecifier
getRawImageType(int imageIndex)
返回ImageTypeSpecifier
指示SampleModel
和ColorModel
,它们最接近地表示图像的“原始”内部格式。protected static Rectangle
getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight)
一种实用方法,读者可以使用该方法计算应读取的源图像区域,同时考虑所提供的ImageReadParam
中的任何源区域和子采样偏移设置。abstract IIOMetadata
getStreamMetadata()
返回一个IIOMetadata
表示与输入源作为一个整体(即,不与任何特定图像相关联)相关联的元数据对象,或者null
如果读取器不支持读取元数据,被设置为忽略元数据,或者,如果没有元数据可用。IIOMetadata
getStreamMetadata(String formatName, Set<String> nodeNames)
返回IIOMetadata
对象,该对象表示与输入源整体相关联的元数据(即,不与任何特定图像相关联)。int
getThumbnailHeight(int imageIndex, int thumbnailIndex)
返回由thumbnailIndex
索引的缩略图预览图像的高度,该图像与ImageIndex
索引的图像ImageIndex
。int
getThumbnailWidth(int imageIndex, int thumbnailIndex)
返回由thumbnailIndex
索引的缩略图预览图像的宽度,该图像与ImageIndex
索引的图像ImageIndex
。int
getTileGridXOffset(int imageIndex)
返回给定图像中tile(0,0)左上角的X坐标。int
getTileGridYOffset(int imageIndex)
返回给定图像中tile(0,0)左上角的Y坐标。int
getTileHeight(int imageIndex)
返回给定图像中图块的高度。int
getTileWidth(int imageIndex)
返回给定图像中图块的宽度。abstract int
getWidth(int imageIndex)
返回输入源中给定图像的宽度(以像素为单位)。boolean
hasThumbnails(int imageIndex)
如果给定图像具有与之关联的缩略图预览图像,则返回true
。boolean
isIgnoringMetadata()
如果通过将true
作为ignoreMetadata
参数传递给setInput
方法将当前输入源标记为允许忽略元数据,则返回true
。boolean
isImageTiled(int imageIndex)
如果图像被组织成 图块 ,则返回true
,即,相等大小的非重叠矩形。boolean
isRandomAccessEasy(int imageIndex)
如果给定图像的存储格式对随机访问像素没有固有障碍,则返回true
。boolean
isSeekForwardOnly()
返回true
如果当前输入源已经被标记为只通过将寻求着true
为seekForwardOnly
参数到setInput
方法。protected void
processImageComplete()
通过调用imageComplete
方法向所有已注册的IIOReadProgressListener
s广播读取图像的完成。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
s。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
s播放渐进传递的开头。protected void
processReadAborted()
通过调用readAborted
方法广播读取已中止到所有已注册的IIOReadProgressListener
s。protected void
processSequenceComplete()
通过调用sequenceComplete
方法向所有已注册的IIOReadProgressListener
广播完成一系列图像读取。protected void
processSequenceStarted(int minIndex)
通过调用sequenceStarted
方法向所有已注册的IIOReadProgressListener
广播图像读取序列的开始。protected void
processThumbnailComplete()
通过调用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)
通过调用thumbnailProgress
方法将当前缩略图完成百分比广播到所有已注册的IIOReadProgressListener
。protected void
processThumbnailStarted(int imageIndex, int thumbnailIndex)
通过调用thumbnailStarted
方法,将缩略图读取的开始广播到所有已注册的IIOReadProgressListener
。protected void
processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
通过调用thumbnailUpdate
方法将缩略图图像中的一组样本的更新广播到所有已注册的IIOReadUpdateListener
。protected void
processWarningOccurred(String warning)
通过调用warningOccurred
方法向所有已注册的IIOReadWarningListener
广播警告消息。protected void
processWarningOccurred(String baseName, String keyword)
广播本地化警告消息给所有注册IIOReadWarningListener
通过调用它们的SwarningOccurred
法从拍摄字符串ResourceBundle
。BufferedImage
read(int imageIndex)
读取由imageIndex
索引的图像,并使用默认值ImageReadParam
将其作为完整的BufferedImage
返回。abstract BufferedImage
read(int imageIndex, ImageReadParam param)
读取由imageIndex
索引的图像,并使用提供的ImageReadParam
将其作为完整的BufferedImage
返回。IIOImage
readAll(int imageIndex, ImageReadParam param)
读取由索引的图像imageIndex
并返回一个IIOImage
包含图像,缩略图和相关联的图像元数据,使用所提供的ImageReadParam
。Iterator<IIOImage>
readAll(Iterator<? extends ImageReadParam> params)
返回Iterator
包含所有图像,缩略图和元数据,从getMinIndex
给出的索引开始,以IIOImage
对象的形式从输入源IIOImage
。RenderedImage
readAsRenderedImage(int imageIndex, ImageReadParam param)
返回RenderedImage
对象,其中包含由imageIndex
索引的图像的内容。boolean
readerSupportsThumbnails()
如果此阅读器理解的图像格式支持与其关联的缩略图预览图像,则返回true
。Raster
readRaster(int imageIndex, ImageReadParam param)
返回一个新的Raster
对象,其中包含图像流中的原始像素数据,未应用任何颜色转换。BufferedImage
readThumbnail(int imageIndex, int thumbnailIndex)
返回由thumbnailIndex
索引的缩略图预览图像,该图像与ImageIndex
索引的图像相关联,为BufferedImage
。BufferedImage
readTile(int imageIndex, int tileX, int tileY)
读取tileX
和tileY
参数指示的tileX
,将其返回为BufferedImage
。Raster
readTileRaster(int imageIndex, int tileX, int tileY)
返回一个新的Raster
对象,其中包含来自图块的原始像素数据,未应用任何颜色转换。void
removeAllIIOReadProgressListeners()
删除所有当前注册的IIOReadProgressListener
对象。void
removeAllIIOReadUpdateListeners()
删除所有当前已注册的IIOReadUpdateListener
对象。void
removeAllIIOReadWarningListeners()
删除所有当前注册的IIOReadWarningListener
对象。void
removeIIOReadProgressListener(IIOReadProgressListener listener)
从已注册的进度监听器列表中删除IIOReadProgressListener
。void
removeIIOReadUpdateListener(IIOReadUpdateListener listener)
从已注册的更新侦听器列表中删除IIOReadUpdateListener
。void
removeIIOReadWarningListener(IIOReadWarningListener listener)
从已注册的错误侦听器列表中删除IIOReadWarningListener
。void
reset()
将ImageReader
恢复到其初始状态。void
setInput(Object input)
设置要用于给定ImageInputStream
或其他Object
的输入源。void
setInput(Object input, boolean seekForwardOnly)
将输入源设置为给定的ImageInputStream
或其他Object
。void
setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
将输入源设置为给定的ImageInputStream
或其他Object
。void
setLocale(Locale locale)
将此ImageReader
的当前Locale
设置为给定值。
-
-
-
字段详细信息
-
originatingProvider
protected ImageReaderSpi originatingProvider
该ImageReaderSpi
该实例化这个对象,或null
如果其身份未知或不存在。 默认情况下,它初始化为null
。
-
input
protected Object input
的ImageInputStream
或其他Object
通过setInput
,并通过检索getInput
。 默认情况下,它初始化为null
。
-
seekForwardOnly
protected boolean seekForwardOnly
true
如果当前输入源已被标记为仅允许通过setInput
进行前向搜索。 默认情况下,该值为false
。
-
ignoreMetadata
protected boolean ignoreMetadata
true
如果当前输入源已标记为允许setInput
忽略元数据。 默认情况下,该值为false
。
-
minIndex
protected int minIndex
读取的最小有效索引,最初为0.当seekForwardOnly
为true
,各种方法可能会尝试访问与具有较低索引的图像关联的数据的IndexOutOfBoundsException
。
-
availableLocales
protected Locale[] availableLocales
的阵列Locale
其可以被用于定位的警告消息,或Snull
如果不支持定位。
-
locale
protected Locale locale
目前Locale
用于定位,或null
如果没有设置。
-
warningListeners
protected List<IIOReadWarningListener> warningListeners
AList
,目前注册IIOReadWarningListener
s,默认初始化为null
,与空List
同义。
-
warningLocales
protected List<Locale> warningLocales
List
的Locale
与每个当前注册的IIOReadWarningListener
相关联,默认情况下初始化为null
,这与空List
同义。
-
progressListeners
protected List<IIOReadProgressListener> progressListeners
AList
当前注册IIOReadProgressListener
s,默认初始化为null
,与空List
同义。
-
updateListeners
protected List<IIOReadUpdateListener> updateListeners
AList
当前已注册IIOReadUpdateListener
s,默认初始化为null
,与空List
同义。
-
-
构造方法详细信息
-
ImageReader
protected ImageReader(ImageReaderSpi originatingProvider)
构造一个ImageReader
并将其originatingProvider
字段设置为提供的值。使用扩展的子类应提供带有签名
(ImageReaderSpi,Object)
的构造(ImageReaderSpi,Object)
,以便检索扩展对象。 如果扩展对象不适合,则应抛出IllegalArgumentException
。- 参数
-
originatingProvider
-该ImageReaderSpi
即调用此构造,或null
。
-
-
方法详细信息
-
getFormatName
public String getFormatName() throws IOException
返回标识输入源格式的String
。默认实现返回
originatingProvider.getFormatNames()[0]
。 可能没有原始服务提供程序或希望使用不同命名策略的实现应该重写此方法。- 结果
- 格式名称,如
String
。 - 异常
-
IOException
- 如果从输入源读取信息时发生错误。
-
getOriginatingProvider
public ImageReaderSpi getOriginatingProvider()
返回在构造函数中传入的ImageReaderSpi
。 请注意,此值可能是null
。- 结果
-
ImageReaderSpi
,或null
。 - 另请参见:
-
ImageReaderSpi
-
setInput
public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
将输入源设置为给定的ImageInputStream
或其他Object
。 必须在使用任何查询或读取方法之前设置输入源。 如果input
是null
,则将删除任何当前设置的输入源。 在任何情况下,minIndex
的值将初始化为0。seekForwardOnly
参数控制是否在getMinIndex
每个图像(或缩略图或图像元数据)时增加getMinIndex
返回的值。 如果seekForwardOnly
为真,则对read(index)
的调用将抛出IndexOutOfBoundsException
如果index < this.minIndex
; 否则,minIndex
的值将设置为index
。 如果seekForwardOnly
是false
,则无论是否进行任何读取操作,minIndex
的值minIndex
将保持为0。ignoreMetadata
参数(如果设置为true
)允许读者忽略读取期间遇到的任何元数据。 在后续调用getStreamMetadata
种getImageMetadata
方法可能会返回null
和IIOImage
从返回readAll
可能返回null
从他们getMetadata
方法。 设置此参数可以使读者更有效地工作。 读者可以选择忽略此设置并正常返回元数据。子类应注意根据前一个流删除任何缓存的信息,例如标题信息或部分解码的图像数据。
的一般使用
Object
比其他ImageInputStream
旨在用于直接与捕获设备或图像协议交互的读取器。 法律类的集合由读者服务提供商的getInputTypes
方法getInputTypes
; 大多数读者将返回仅包含ImageInputStream.class
的单元素数组,表示它们仅接受ImageInputStream
。默认实现针对
input
返回的列表检查input
参数,如果参数不是列表中某个类的实例,originatingProvider.getInputTypes()
失败。 如果原始提供者设置为null
,输入被接受,只有当它是ImageInputStream
。- 参数
-
input
- 用于将来解码的ImageInputStream
或其他Object
。 -
seekForwardOnly
- 如果是true
,则只能从此输入源按升序读取图像和元数据。 -
ignoreMetadata
- 如果是true
,则在读取期间可以忽略元数据。 - 异常
-
IllegalArgumentException
- 如果input
不是原始服务提供商的getInputTypes
方法返回的某个类的实例,或者不是ImageInputStream
。 - 另请参见:
-
ImageInputStream
,getInput()
,ImageReaderSpi.getInputTypes()
-
setInput
public void setInput(Object input, boolean seekForwardOnly)
将输入源设置为给定的ImageInputStream
或其他Object
。 必须在使用任何查询或读取方法之前设置输入源。 如果input
是null
,则将删除任何当前设置的输入源。 在任何情况下,minIndex
的值将初始化为0。seekForwardOnly
参数控制是否在getMinIndex
每个图像(或缩略图或图像元数据)时增加getMinIndex
返回的值。 如果seekForwardOnly
为真,则对read(index)
的调用将抛出IndexOutOfBoundsException
如果index < this.minIndex
; 否则,minIndex
的值将设置为index
。 如果seekForwardOnly
是false
,则无论是否进行任何读取操作,minIndex
的值minIndex
将保持为0。此方法相当于
setInput(input, seekForwardOnly, false)
。- 参数
-
input
-ImageInputStream
或其他Object
用于将来解码。 -
seekForwardOnly
- 如果是true
,则只能从此输入源按升序读取图像和元数据。 - 异常
-
IllegalArgumentException
- 如果input
不是始发服务提供商的getInputTypes
方法返回的某个类的实例,或者不是ImageInputStream
。 - 另请参见:
-
getInput()
-
setInput
public void setInput(Object input)
设置要用于给定ImageInputStream
或其他Object
的输入源。 必须在使用任何查询或读取方法之前设置输入源。 如果input
是null
,则将删除任何当前设置的输入源。 在任何情况下,minIndex
的值将初始化为0。此方法相当于
setInput(input, false, false)
。- 参数
-
input
-ImageInputStream
或其他Object
用于将来解码。 - 异常
-
IllegalArgumentException
- 如果input
不是原始服务提供商的getInputTypes
方法返回的某个类的实例,或者不是ImageInputStream
。 - 另请参见:
-
getInput()
-
getInput
public Object getInput()
返回先前设置为输入源的ImageInputStream
或其他Object
。 如果尚未设置输入源,则返回null
。- 结果
- 的
Object
,将被用于未来的解码,或null
。 - 另请参见:
-
ImageInputStream
,setInput(java.lang.Object, boolean, boolean)
-
isSeekForwardOnly
public boolean isSeekForwardOnly()
返回true
如果当前输入源已经被标记为只通过将寻求着true
为seekForwardOnly
参数到setInput
方法。- 结果
-
true
如果输入源仅向前搜索。 - 另请参见:
-
setInput(java.lang.Object, boolean, boolean)
-
isIgnoringMetadata
public boolean isIgnoringMetadata()
如果通过将true
作为ignoreMetadata
参数传递给setInput
方法将当前输入源标记为允许忽略元数据,则返回true
。- 结果
-
true
如果可以忽略元数据。 - 另请参见:
-
setInput(java.lang.Object, boolean, boolean)
-
getMinIndex
public int getMinIndex()
返回用于读取图像,缩略图或图像元数据的最低有效索引。 如果seekForwardOnly()
是false
,则此值通常保持为0,表示可以进行随机访问。 否则,它将包含最近访问的索引的值,并以单调方式增加。- 结果
- 阅读的最低法律索引。
-
getAvailableLocales
public Locale[] getAvailableLocales()
返回一个Locale
的数组,可用于本地化警告侦听器和压缩设置。 返回值null
表示不支持本地化。如果它是非
null
,则默认实现返回availableLocales
实例变量的克隆,否则返回null
。- 结果
-
Locale
的数组,Locale
setLocale
或null
参数。
-
setLocale
public void setLocale(Locale locale)
将此ImageReader
的当前Locale
设置为给定值。 值null
将删除任何先前的设置,并指示阅读器应按其认为合适的方式进行本地化。- 参数
-
locale
- 所需的Locale
或null
。 - 异常
-
IllegalArgumentException
- 如果locale
不是null
但不是getAvailableLocales
返回的值getAvailableLocales
。 - 另请参见:
-
getLocale()
-
getLocale
public Locale getLocale()
返回当前设置Locale
,或null
如果没有设置。- 结果
- 目前
Locale
,或null
。 - 另请参见:
-
setLocale(java.util.Locale)
-
getNumImages
public abstract int getNumImages(boolean allowSearch) throws IOException
返回当前输入源可用的图像数,不包括缩略图。请注意,某些图像格式(例如动画GIF)不指定流中存在的图像数量。 因此,确定图像的数量将需要扫描整个流并且可能需要存储器用于缓冲。 如果
read
顺序处理图像,则简单地用增加的索引调用read
可能更有效,直到抛出IndexOutOfBoundsException
以指示没有更多图像可用。allowSearch
参数可以设置为false
以指示false
穷举搜索; 返回值将为-1
,表示需要进行搜索。 如果输入已与指定seekForwardOnly
设置为true
,此方法将引发IllegalStateException
如果allowSearch
被设置为true
。- 参数
-
allowSearch
- 如果是true
,即使需要搜索,也会返回真实的图像数。 如果是false
,则读者可以-1
不执行搜索的情况下返回-1
。 - 结果
- 图像数量,如
int
,或-1
如果allowSearch
是false
,则需要搜索。 - 异常
-
IllegalStateException
- 如果尚未设置输入源,或者已将seekForwardOnly
指定的输入设置为true
。 -
IOException
- 如果从输入源读取信息时发生错误。 - 另请参见:
-
setInput(java.lang.Object, boolean, boolean)
-
getWidth
public abstract int getWidth(int imageIndex) throws IOException
返回输入源中给定图像的宽度(以像素为单位)。如果图像可以呈现为用户指定的大小,则此方法返回默认宽度。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 图像的宽度,如
int
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果从输入源读取宽度信息时发生错误。
-
getHeight
public abstract int getHeight(int imageIndex) throws IOException
返回输入源中给定图像的高度(以像素为单位)。如果图像可以呈现为用户指定的大小,则此方法返回默认高度。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 图像的高度,如
int
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果从输入源读取高度信息时发生错误。
-
isRandomAccessEasy
public boolean isRandomAccessEasy(int imageIndex) throws IOException
如果给定图像的存储格式对随机访问像素没有固有障碍,则返回true
。 对于大多数压缩格式,例如JPEG,此方法应返回false
,因为除了感兴趣区域之外,可能需要解码图像的大部分。这仅仅是希望提高效率的计划的暗示; 所有读者必须能够读取
ImageReadParam
指定的任意区域。请注意,从此方法返回
false
格式可能仍然允许平铺( 例如 ,JPEG中的重新开始标记),并且随机访问在平铺上可能相当有效。 见isImageTiled
。保证所有图像都支持轻松随机访问或保证不支持简单随机访问的阅读器可以分别返回
true
或false
而无需访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。默认实现返回
false
。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
-
true
如果读取给定图像的感兴趣区域可能是有效的。 - 异常
-
IllegalStateException
- 如果需要输入源来确定返回值,但尚未设置任何输入源。 -
IndexOutOfBoundsException
- 如果必须访问图像以确定返回值,但提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。
-
getAspectRatio
public float getAspectRatio(int imageIndex) throws IOException
返回给定图像的宽高比(即宽度除以其高度)为float
。 对于固有可调整大小的图像,此方法提供了一种在给定所需高度的情况下确定适当宽度的方法,反之亦然。 对于不可调整大小的图像,使用真实的宽度和高度。默认实现只返回
(float)getWidth(imageIndex)/getHeight(imageIndex)
。- 参数
-
imageIndex
- 要查询的映像的索引。 - 结果
-
float
表示给定图像的纵横比。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。
-
getRawImageType
public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException
返回ImageTypeSpecifier
表示SampleModel
和ColorModel
,它们最接近地表示图像的“原始”内部格式。 如果没有紧密匹配,则应返回保留图像中最多信息的类型。 返回的值也应包含在getImageTypes
返回的值列表中。默认实现只返回
getImageType
提供的列表中的第一个条目。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
-
ImageTypeSpecifier
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果从输入源读取格式信息时发生错误。
-
getImageTypes
public abstract Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException
返回Iterator
其中包含可以解码给定图像的可能图像类型,形式为ImageTypeSpecifiers
。 将返回至少一种合法图像类型。迭代器的第一个元素应该是最“自然”的类型,用于尽可能少地丢失图像来解码图像。 例如,对于JPEG图像,第一个条目应该是RGB图像,即使图像数据内部存储在YCbCr颜色空间中。
- 参数
-
imageIndex
- 图像的索引是retrieved
。 - 结果
-
Iterator
包含至少一个ImageTypeSpecifier
表示用于解码当前给定图像的建议图像类型。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果从输入源读取格式信息时发生错误。 - 另请参见:
-
ImageReadParam.setDestination(BufferedImage)
,IIOParam.setDestinationType(ImageTypeSpecifier)
-
getDefaultReadParam
public ImageReadParam getDefaultReadParam()
返回适用于此格式的默认ImageReadParam
对象。 所有子类都应为所有参数定义一组默认值,并通过此调用返回它们。 可以在设置输入源之前调用此方法。默认实现构造并返回不允许源缩放的新
ImageReadParam
对象( 即 ,它返回new ImageReadParam()
。- 结果
-
ImageReadParam
对象,可用于使用一组默认设置控制解码过程。
-
getStreamMetadata
public abstract IIOMetadata getStreamMetadata() throws IOException
返回IIOMetadata
对象,表示与输入源整体关联的元数据(即,与任何特定图像null
);如果读取器不支持读取元数据,则设置为忽略元数据,或者如果没有元数据可用,则null
。- 结果
-
IIOMetadata
对象,或null
。 - 异常
-
IOException
- 如果在读取期间发生错误。
-
getStreamMetadata
public IIOMetadata getStreamMetadata(String formatName, Set<String> nodeNames) throws IOException
返回IIOMetadata
对象,该对象表示与输入源整体相关联的元数据(即,不与任何特定图像相关联)。 如果不存在此类数据,则返回null
。生成的元数据对象仅负责以
formatName
指定的格式返回文档。 在返回的任何文档中,只需返回名称为nodeNames
成员的节点。 以这种方式,基于实际需要什么信息,可以将读取器完成的元数据处理量保持为最小。如果
formatName
不是受支持的元数据格式的名称,则返回null
。在所有情况下,返回比严格必要的更有能力的元数据对象是合法的。 格式名称和节点名称仅仅是可用于减少读者工作量的提示。
在检查格式名称是否受支持后,默认实现只返回调用
getStreamMetadata()
的结果。 如果不是,则返回null
。- 参数
-
formatName
- 可用于从返回的IIOMetadata
对象检索文档的元数据格式名称。 -
nodeNames
- 包含检索到的文档中可能包含的节点名称的Set
。 - 结果
-
IIOMetadata
对象,或null
。 - 异常
-
IllegalArgumentException
- 如果formatName
是null
。 -
IllegalArgumentException
- 如果nodeNames
是null
。 -
IOException
- 如果在读取期间发生错误。
-
getImageMetadata
public abstract IIOMetadata getImageMetadata(int imageIndex) throws IOException
返回一个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
可能返回null
。在所有情况下,返回比严格必要的更有能力的元数据对象是合法的。 格式名称和节点名称仅仅是可用于减少读者工作量的提示。
在检查格式名称是否受支持后,默认实现只返回调用
getImageMetadata(imageIndex)
的结果。 如果不是,则返回null
。- 参数
-
imageIndex
- 要检索其元数据的图像的索引。 -
formatName
- 可用于从返回的IIOMetadata
对象检索文档的元数据格式名称。 -
nodeNames
- 包含检索到的文档中可能包含的节点名称的Set
。 - 结果
-
IIOMetadata
对象,或null
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IllegalArgumentException
- 如果formatName
是null
。 -
IllegalArgumentException
- 如果nodeNames
是null
。 -
IOException
- 如果在读取期间发生错误。
-
read
public BufferedImage read(int imageIndex) throws IOException
读取由imageIndex
索引的图像,并使用默认值ImageReadParam
将其作为完整的BufferedImage
返回。 这是一种称为read(imageIndex, null)
的便捷方法。返回的图像将根据该第一被格式化
ImageTypeSpecifier
从返回getImageTypes
。任何注册的
IIOReadProgressListener
对象将通过调用他们的imageStarted
方法通知,然后在读取进行时调用他们的imageProgress
方法。 最后将调用他们的imageComplete
方法。 当像素被解码时,可以在读取期间的其他时间更新对象IIOReadUpdateListener
。 最后,IIOReadWarningListener
对象将收到解码期间发生的任何非致命警告的通知。- 参数
-
imageIndex
- 要检索的图像的索引。 - 结果
- 图像的期望部分为
BufferedImage
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。
-
read
public abstract BufferedImage read(int imageIndex, ImageReadParam param) throws IOException
读取由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
public IIOImage readAll(int imageIndex, ImageReadParam param) throws IOException
读取由索引的图像imageIndex
并返回一个IIOImage
包含图像,缩略图和相关联的图像元数据,使用所提供的ImageReadParam
。实际
BufferedImage
由返回引用IIOImage
将使用由定义的算法来选择getDestination
方法。任何注册的
IIOReadProgressListener
对象将通过调用他们的imageStarted
方法通知,然后在读取进行时调用他们的imageProgress
方法。 最后将调用他们的imageComplete
方法。 当读取像素时,可以在读取期间的其他时间更新对象IIOReadUpdateListener
。 最后,IIOReadWarningListener
对象将收到解码期间发生的任何非致命警告的通知。要读取的源带组和要写入的目标带通过在所提供的
ImageReadParam
上调用getSourceBands
和getDestinationBands
来确定。 如果这些方法返回的数组长度不同,则源带集包含的索引大于最大可用源索引,或者目标带集包含的索引大于最大合法目标索引,则抛出IllegalArgumentException
。无论区域设置如何,都将全部返回缩略图。
如果提供的
ImageReadParam
包含此阅读器不支持的可选设置值( 例如源渲染大小或任何特定于格式的设置),则将忽略这些值。- 参数
-
imageIndex
- 要检索的图像的索引。 -
param
-一个ImageReadParam
用来控制读取过程中,或null
。 - 结果
-
IIOImage
包含图像的期望部分,一组缩略图和相关联的图像元数据。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IllegalArgumentException
- 如果param.getSourceBands
和param.getDestinationBands
指定的源和目标带的param.getSourceBands
长度不同或包含超出范围的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 如果在读取期间发生错误。
-
readAll
public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params) throws IOException
返回Iterator
其中包含所有图像,缩略图和元数据,从getMinIndex
给出的索引开始,以IIOImage
对象的形式从输入源IIOImage
。 提供Iterator
包含ImageReadParam
对象; 从输入源读取的每个图像都消耗一个元素,直到没有更多图像可用。 如果读取参数Iterator
用尽元素,但输入源中仍有更多可用图像,则默认读取参数用于剩余图像。如果
params
是null
,则默认读取参数将用于所有图像。实际
BufferedImage
由返回引用IIOImage
将使用由定义的算法来选择getDestination
方法。任何注册的
IIOReadProgressListener
物品将通过拨打sequenceStarted
方法通知一次。 然后,对于每个解码的图像,将调用imageStarted
,随后在读取进行时调用imageProgress
,最后imageComplete
。 在最后一个图像被解码后,将调用sequenceComplete
方法。 当读取像素时,可以在读取期间的其他时间更新IIOReadUpdateListener
对象。 最后,IIOReadWarningListener
对象将收到解码期间发生的任何非致命警告的通知。要读取的源带的集合和要写入的目标带通过在所提供的
ImageReadParam
上调用getSourceBands
和getDestinationBands
来确定。 如果这些方法返回的数组长度不同,则源带集包含的索引大于最大可用源索引,或者目标带集包含的索引大于最大合法目标索引,则抛出IllegalArgumentException
。无论区域设置如何,都将全部返回缩略图。
如果提供的任何
ImageReadParam
的任何一个包含此阅读器不支持的可选设置值( 例如源渲染大小或任何特定于格式的设置),则将忽略它们。- 参数
-
params
- 一个Iterator
包含ImageReadParam
对象。 - 结果
-
Iterator
表示输入源的内容为IIOImage
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IllegalArgumentException
-如果任何非null
的元件params
不是ImageReadParam
。 -
IllegalArgumentException
- 如果param.getSourceBands
和param.getDestinationBands
指定的源和目标带的param.getSourceBands
长度不同或包含超出范围的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 如果在读取期间发生错误。 - 另请参见:
-
ImageReadParam
,IIOImage
-
canReadRaster
public boolean canReadRaster()
如果此插件仅支持读取像素数据的Raster
,则返回true
。 如果此方法返回false
,则调用readRaster
或readTileRaster
将抛出UnsupportedOperationException
。默认实现返回
false
。- 结果
-
true
如果此插件支持读取原始Raster
s。 - 另请参见:
-
readRaster(int, javax.imageio.ImageReadParam)
,readTileRaster(int, int, int)
-
readRaster
public Raster readRaster(int imageIndex, ImageReadParam param) throws IOException
返回一个新的Raster
对象,其中包含图像流中的原始像素数据,未应用任何颜色转换。 应用程序必须确定如何通过其他方式解释像素数据。 所提供的ImageReadParam
对象中的任何目标或图像类型参数都将被忽略,但所有其他参数的使用方式与read
方法完全相同,只是任何目标偏移都用作逻辑偏移而不是物理偏移。 返回的Raster
的大小将始终是剪切到实际图像的源区域的大小。 流本身的逻辑偏移将被忽略。该方法允许通常应用颜色转换的格式(例如JPEG)和通常不具有相关色彩空间的格式(例如遥感或医学成像数据)来提供对原始像素数据的访问。
任何已注册的
readUpdateListener
都将被忽略,因为没有BufferedImage
,但所有其他侦听器的调用方式与read
方法完全相同。如果
canReadRaster()
返回false
,则此方法抛出UnsupportedOperationException
。如果提供的
ImageReadParam
包含此阅读器不支持的可选设置值( 例如源渲染大小或任何特定于格式的设置),则将忽略它们。默认实现抛出
UnsupportedOperationException
。- 参数
-
imageIndex
- 要读取的图像的索引。 -
param
-一个ImageReadParam
用来控制读取过程中,或null
。 - 结果
- 图像的所需部分为
Raster
。 - 异常
-
UnsupportedOperationException
- 如果此插件不支持读取原始Raster
s。 -
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。 - 另请参见:
-
canReadRaster()
,read(int)
,Raster
-
isImageTiled
public boolean isImageTiled(int imageIndex) throws IOException
如果图像被组织成图块 ,则返回true
,即,相等大小的非重叠矩形。读取器插件可以选择是否在存储时暴露图像中存在的平铺。 它甚至可以选择在没有明确存在时通告平铺。 一般情况下,只有在访问单个图块时具有某些优势(速度或空间)时才应公布图块。 无论读者是否广告平铺,它都必须能够读取
ImageReadParam
指定的任意矩形区域。保证所有图像被平铺或保证不被平铺的读取器可以分别返回
true
或false
而不访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。默认实现只返回
false
。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
-
true
如果图像是平铺的。 - 异常
-
IllegalStateException
- 如果需要输入源来确定返回值,但尚未设置任何输入源。 -
IndexOutOfBoundsException
- 如果必须访问图像以确定返回值,但提供的索引超出范围。 -
IOException
- 如果在阅读期间发生错误。
-
getTileWidth
public int getTileWidth(int imageIndex) throws IOException
返回给定图像中图块的宽度。默认实现只返回
getWidth(imageIndex)
,这对于非平铺图像是正确的。 支持平铺的读者应该重写此方法。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 瓷砖的宽度。
- 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果在阅读期间发生错误。
-
getTileHeight
public int getTileHeight(int imageIndex) throws IOException
返回给定图像中图块的高度。默认实现只返回
getHeight(imageIndex)
,这对于非平铺图像是正确的。 支持平铺的读者应该重写此方法。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 瓷砖的高度。
- 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。
-
getTileGridXOffset
public int getTileGridXOffset(int imageIndex) throws IOException
返回给定图像中tile(0,0)左上角的X坐标。瓦片网格X偏移总是具有相同值(通常为0)的读取器可以返回该值而不访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。
默认实现只返回0,这对于大多数格式的非平铺图像和平铺图像都是正确的。 支持使用非(0,0)偏移进行平铺的读者应该重写此方法。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 图块网格的X偏移量。
- 异常
-
IllegalStateException
- 如果需要输入源来确定返回值,但尚未设置任何输入源。 -
IndexOutOfBoundsException
- 如果必须访问图像以确定返回值,但提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。
-
getTileGridYOffset
public int getTileGridYOffset(int imageIndex) throws IOException
返回给定图像中tile(0,0)左上角的Y坐标。平铺网格Y偏移始终具有相同值(通常为0)的读取器可以返回该值而不访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。
默认实现只返回0,这对于大多数格式的非平铺图像和平铺图像都是正确的。 支持使用非(0,0)偏移进行平铺的读者应该重写此方法。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 平铺网格的Y偏移量。
- 异常
-
IllegalStateException
- 如果需要输入源来确定返回值,但尚未设置任何输入源。 -
IndexOutOfBoundsException
- 如果必须访问图像以确定返回值,但提供的索引超出范围。 -
IOException
- 如果在读取期间发生错误。
-
readTile
public BufferedImage readTile(int imageIndex, int tileX, int tileY) throws IOException
读取tileX
和tileY
参数指示的tileX
,将其返回为BufferedImage
。 如果参数超出范围,则抛出IllegalArgumentException
。 如果图像未平铺,则值0,0将返回整个图像; 任何其他值将导致IllegalArgumentException
被抛出。此方法仅仅是一个方便相当于调用
read(int, ImageReadParam)
用read参数指定具有偏移量的源极区域tileX*getTileWidth(imageIndex)
,tileY*getTileHeight(imageIndex)
和宽度和高度getTileWidth(imageIndex)
,getTileHeight(imageIndex)
; 和子采样因子为1,偏移为0.要对一个图块进行二次采样,请使用指定此区域和不同子采样参数的读取参数调用read
。如果
tileX
和tileY
为0,则默认实现返回整个图像,否则返回IllegalArgumentException
。- 参数
-
imageIndex
- 要检索的图像的索引。 -
tileX
- 要检索的tileX
的列索引(以0开头)。 -
tileY
- 要检索的tileY
的行索引(以0开头)。 - 结果
- 瓷砖为
BufferedImage
。 - 异常
-
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果imageIndex
超出界限。 -
IllegalArgumentException
- 如果tile索引超出范围。 -
IOException
- 如果在阅读期间发生错误。
-
readTileRaster
public Raster readTileRaster(int imageIndex, int tileX, int tileY) throws IOException
返回一个新的Raster
对象,其中包含来自图块的原始像素数据,未应用任何颜色转换。 应用程序必须确定如何通过其他方式解释像素数据。如果
canReadRaster()
返回false
,则此方法抛出UnsupportedOperationException
。默认实现检查是否读
Raster
s的支持,如果有来电readRaster(imageIndex, null)
如果tileX
和tileY
是0,或将引发IllegalArgumentException
否则。- 参数
-
imageIndex
- 要检索的图像的索引。 -
tileX
- 要检索的tileX
的列索引(以0开头)。 -
tileY
- 要检索的tileY
的行索引(以0开头)。 - 结果
- 瓷砖为
Raster
。 - 异常
-
UnsupportedOperationException
- 如果此插件不支持读取原始Raster
s。 -
IllegalArgumentException
- 如果tile索引超出范围。 -
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果imageIndex
超出界限。 -
IOException
- 如果在读取期间发生错误。 - 另请参见:
-
readTile(int, int, int)
,readRaster(int, javax.imageio.ImageReadParam)
,Raster
-
readAsRenderedImage
public RenderedImage readAsRenderedImage(int imageIndex, ImageReadParam param) throws IOException
返回RenderedImage
对象,其中包含由imageIndex
索引的图像的内容。 默认情况下,返回的图像只是由BufferedImage
返回的read(imageIndex, param)
。该方法的语义可以从那些的其他不同
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
public boolean hasThumbnails(int imageIndex) throws IOException
如果给定图像具有与之关联的缩略图预览图像,则返回true
。 如果格式不支持缩略图(readerSupportsThumbnails
返回false
),则无论是否设置了输入源或imageIndex
是否在边界内,false
将返回imageIndex
。如果
getNumThumbnails
返回大于0的值,则默认实现返回true
。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
-
true
如果给定图像有缩略图。 - 异常
-
IllegalStateException
- 如果阅读器支持缩略图但尚未设置输入源。 -
IndexOutOfBoundsException
- 如果阅读器支持缩略图,但imageIndex
超出范围。 -
IOException
- 如果在读取期间发生错误。
-
getNumThumbnails
public int getNumThumbnails(int imageIndex) throws IOException
返回与给定图像关联的缩略图预览图像的数量。 如果格式不支持缩略图(readerSupportsThumbnails
返回false
),则无论是否设置了输入源或imageIndex
是否在边界内,0
将返回imageIndex
。默认实现返回0而不检查其参数。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 与给定图像关联的缩略图数量。
- 异常
-
IllegalStateException
- 如果阅读器支持缩略图但尚未设置输入源。 -
IndexOutOfBoundsException
- 如果阅读器支持缩略图,但imageIndex
超出范围。 -
IOException
- 如果在读取期间发生错误。
-
getThumbnailWidth
public int getThumbnailWidth(int imageIndex, int thumbnailIndex) throws IOException
返回由thumbnailIndex
索引的缩略图预览图像的宽度,该图像与ImageIndex
索引的图像ImageIndex
。如果读者不支持缩略图(
readerSupportsThumbnails
返回false
),则会抛出UnsupportedOperationException
。默认实现只返回
readThumbnail(imageindex, thumbnailIndex).getWidth()
。 因此,子类应尽可能覆盖此方法,以避免强制读取缩略图。- 参数
-
imageIndex
- 要检索的图像的索引。 -
thumbnailIndex
- 要检索的缩略图的索引。 - 结果
- 所需缩略图的宽度为
int
。 - 异常
-
UnsupportedOperationException
- 如果不支持缩略图。 -
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引中的任何一个超出范围。 -
IOException
- 如果在阅读期间发生错误。
-
getThumbnailHeight
public int getThumbnailHeight(int imageIndex, int thumbnailIndex) throws IOException
返回由thumbnailIndex
索引的缩略图预览图像的高度,该图像与ImageIndex
索引的图像ImageIndex
。如果读者不支持缩略图(
readerSupportsThumbnails
返回false
),则会抛出UnsupportedOperationException
。默认实现只返回
readThumbnail(imageindex, thumbnailIndex).getHeight()
。 因此,子类应尽可能覆盖此方法,以避免强制读取缩略图。- 参数
-
imageIndex
- 要检索的图像的索引。 -
thumbnailIndex
- 要检索的缩略图的索引。 - 结果
- 所需缩略图的高度为
int
。 - 异常
-
UnsupportedOperationException
- 如果不支持缩略图。 -
IllegalStateException
- 如果尚未设置输入源。 -
IndexOutOfBoundsException
- 如果提供的索引中的任何一个超出范围。 -
IOException
- 如果在阅读期间发生错误。
-
readThumbnail
public BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws IOException
返回由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
如果当前的读操作应该中止。 - 另请参见:
-
abort()
,clearAbortRequest()
-
clearAbortRequest
protected void clearAbortRequest()
清除任何先前的中止请求。 调用此方法后,abortRequested
将返回false
。- 另请参见:
-
abort()
,abortRequested()
-
addIIOReadWarningListener
public void addIIOReadWarningListener(IIOReadWarningListener listener)
将IIOReadWarningListener
添加到已注册的警告侦听器列表中。 如果listener
是null
,则不会抛出任何异常,也不会执行任何操作。 如果可能,发送到给定侦听器的消息将被本地化,以匹配当前的Locale
。 如果未设置Locale
,则警告消息可能会在读者认为合适时进行本地化。- 参数
-
listener
- 待注册IIOReadWarningListener
。 - 另请参见:
-
removeIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)
-
removeIIOReadWarningListener
public void removeIIOReadWarningListener(IIOReadWarningListener listener)
从已注册的错误侦听器列表中删除IIOReadWarningListener
。 如果以前没有注册过监听器,或者如果listener
是null
,则不会抛出异常并且不会采取任何操作。- 参数
-
listener
- 要取消注册的IIOReadWarningListener。 - 另请参见:
-
addIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)
-
removeAllIIOReadWarningListeners
public void removeAllIIOReadWarningListeners()
删除所有当前已注册的IIOReadWarningListener
对象。默认实现将
warningListeners
和warningLocales
实例变量设置为null
。
-
addIIOReadProgressListener
public void addIIOReadProgressListener(IIOReadProgressListener listener)
将IIOReadProgressListener
添加到已注册的进度监听器列表中。 如果listener
是null
,则不会抛出任何异常,也不会执行任何操作。- 参数
-
listener
- 要注册的IIOReadProgressListener。 - 另请参见:
-
removeIIOReadProgressListener(javax.imageio.event.IIOReadProgressListener)
-
removeIIOReadProgressListener
public void removeIIOReadProgressListener(IIOReadProgressListener listener)
从已注册的进度监听器列表中删除IIOReadProgressListener
。 如果以前没有注册过监听器,或者如果listener
是null
,则不会抛出异常并且不会采取任何操作。- 参数
-
listener
- 要取消注册的IIOReadProgressListener。 - 另请参见:
-
addIIOReadProgressListener(javax.imageio.event.IIOReadProgressListener)
-
removeAllIIOReadProgressListeners
public void removeAllIIOReadProgressListeners()
删除所有当前注册的IIOReadProgressListener
对象。默认实现将
progressListeners
实例变量设置为null
。
-
addIIOReadUpdateListener
public void addIIOReadUpdateListener(IIOReadUpdateListener listener)
将IIOReadUpdateListener
添加到已注册的更新侦听器列表中。 如果listener
是null
,则不会抛出任何异常,也不会执行任何操作。 当图像和缩略图被解码时,收听者将接收像素更新的通知,包括渐进传递的开始和结束。如果不存在更新侦听器,则读取器可以选择对目标图像和/或缩略图的像素执行更少的更新,这可以导致更有效的解码。
例如,在渐进式JPEG解码中,每个通道包含对一组系数的更新,如果存在侦听器,则必须将其转换为像素值并且针对每个通道转换为RGB颜色空间。 如果不存在侦听器,则可以简单地累积系数并且最终结果被转换并且仅颜色转换一次。
无论是否执行中间更新,解码的最终结果都是相同的。 因此,如果仅需要最终图像,则可能优选不注册任何
IIOReadUpdateListener
。 通常,渐进式更新在通过网络连接获取图像时最有效,与本地CPU处理相比,这种连接速度非常慢; 通过快速连接,渐进式更新实际上可能会降低图像的显示速度。- 参数
-
listener
- 要注册的IIOReadUpdateListener。 - 另请参见:
-
removeIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)
-
removeIIOReadUpdateListener
public void removeIIOReadUpdateListener(IIOReadUpdateListener listener)
从已注册的更新侦听器列表中删除IIOReadUpdateListener
。 如果先前没有注册过监听器,或者listener
是null
,则不会抛出异常并且不会采取任何操作。- 参数
-
listener
- 要取消注册的IIOReadUpdateListener。 - 另请参见:
-
addIIOReadUpdateListener(javax.imageio.event.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
s。 子类可以使用此方法作为方便。
-
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
protected void processPassComplete(BufferedImage theImage)
通过调用他们的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
方法将缩略图图像中的一组样本的更新广播到所有已注册的IIOReadUpdateListener
。 子类可以使用此方法作为方便。- 参数
-
theThumbnail
- 正在更新的BufferedImage
缩略图。 -
minX
- 传递中包含的左上角像素的X坐标。 -
minY
- 传递中包含的左上角像素的X坐标。 -
width
- 要更新的区域的总宽度,包括periodX > 1
跳过的像素。 -
height
- 要更新的区域的总高度,包括periodY > 1
跳过的像素。 -
periodX
- 像素之间的水平间隔。 -
periodY
- 像素之间的垂直间隔。 -
bands
-的阵列int
以及指示该组中的目的地的受影响的频带。
-
processThumbnailPassComplete
protected void processThumbnailPassComplete(BufferedImage theThumbnail)
通过调用thumbnailPassComplete
方法将缩略图渐进传递的结尾广播到所有已注册的IIOReadUpdateListener
。 子类可以使用此方法作为方便。- 参数
-
theThumbnail
- 正在更新的BufferedImage
缩略图。
-
processWarningOccurred
protected void processWarningOccurred(String warning)
通过调用warningOccurred
方法向所有已注册的IIOReadWarningListener
广播警告消息。 子类可以使用此方法作为方便。- 参数
-
warning
- 要发送的警告消息。 - 异常
-
IllegalArgumentException
- 如果warning
是null
。
-
processWarningOccurred
protected void processWarningOccurred(String baseName, String keyword)
广播本地化警告消息给所有注册IIOReadWarningListener
通过调用它们的SwarningOccurred
法从拍摄字符串ResourceBundle
。 子类可以使用此方法作为方便。- 参数
-
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
protected static Rectangle getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight)
读取器可用于计算应读取的源图像区域的实用方法,同时考虑所提供的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
的源和目标波段设置的ImageReadParam
。 一旦读取器知道输入流中存在的源图像的带的数量和正被写入的目标图像的带的数量,就可以调用该方法。该方法检索的源和目标频带设定从使用PARAM阵列
getSourceBands
种getDestinationBands
方法(或认为它们是null
如果param
是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
-Iterator
的ImageTypeSpecifier
s表示合法的图像类型,默认为第一个。 -
width
- 正在解码的图像或图块的真实宽度。 -
height
- 正在解码的图像或图块的真实宽度。 - 结果
- 应该写入解码像素数据的
BufferedImage
。 - 异常
-
IIOException
-如果ImageTypeSpecifier
通过指定param
不会匹配任何法律措施的imageTypes
。 -
IllegalArgumentException
- 如果imageTypes
是null
或为空,或者ImageTypeSpecifier
检索到类型不是ImageTypeSpecifier
的对象。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IllegalArgumentException
- 如果width
和height
的产品大于Integer.MAX_VALUE
。
-
-