- java.lang.Object
-
- javax.imageio.ImageReader
-
public abstract class ImageReader extends Object
用于解析和解码图像的抽象超类。 这个类必须由在Java Image I / O框架的上下文中读取的类进行子类化。ImageReader
对象通常由特定格式的服务提供商接口(SPI)类实例化。 服务提供商类(例如,ImageReaderSpi
实例)已注册到IIORegistry
,它们用于格式识别和呈现可用格式的读者和作者。当设置输入源(使用
setInput
方法)时,可能将其标记为“仅向前寻找”。 此设置意味着输入源中包含的图像只能按顺序读取,可能允许读取器避免缓存包含与先前读取的图像相关联的数据的输入的部分。- 另请参见:
-
ImageWriter
,IIORegistry
,ImageReaderSpi
-
-
Field Summary
Fields Modifier and Type Field 描述 protected Locale[]
availableLocales
可用于本地化警告消息的Locale
的数组,如果不支持本地化,null
。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
同义词。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
ImageReader(ImageReaderSpi originatingProvider)
构造一个ImageReader
并将其originatingProvider
字段设置为提供的值。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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
s的数组。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
s。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
。int
getThumbnailWidth(int imageIndex, int thumbnailIndex)
返回由索引的缩略图的预览图像的宽度thumbnailIndex
,与由索引的图像相关联ImageIndex
。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
isIgnoringMetadata()
如果当前输入源已被标记为允许通过将true
作为ignoreMetadata
参数传递给setInput
方法的ignoreMetadata
来忽略元数据,则返回true
。boolean
isImageTiled(int imageIndex)
如果图像被组织成 瓦片 ,则返回true
,即相等大小的非重叠矩形。boolean
isRandomAccessEasy(int imageIndex)
返回true
如果给定图像的存储格式不会对随机访问像素造成固有的障碍。boolean
isSeekForwardOnly()
返回true
如果当前输入源已被标记为寻找前进,则只能通过将true
作为seekForwardOnly
参数传递给setInput
方法。protected void
processImageComplete()
通过调用他们的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
传送到所有注册的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
processReadAborted()
通过调用它们的readAborted
方法,广播已经中止所有注册的所有注册的IIOReadProgressListener
。protected void
processSequenceComplete()
通过调用他们的sequenceComplete
方法,将所有注册的IIOReadProgressListener
的图像读取序列的完成广播。protected void
processSequenceStarted(int minIndex)
通过调用sequenceStarted
方法,将所有注册的IIOReadProgressListener
的图像序列的开始广播。protected void
processThumbnailComplete()
通过调用thumbnailComplete
方法,将所有注册的IIOReadProgressListener
s的缩略图读取完成。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)
通过使用从ResourceBundle
获取的字符串调用其warningOccurred
方法向所有注册的IIOReadWarningListener
广播本地化警告消息。BufferedImage
read(int imageIndex)
读取由imageIndex
索引的图像,并将其作为完整的BufferedImage
返回,使用默认值ImageReadParam
。abstract BufferedImage
read(int imageIndex, ImageReadParam param)
阅读由imageIndex
索引的图像,并将其作为完整的BufferedImage
返回,使用附带的ImageReadParam
。IIOImage
readAll(int imageIndex, ImageReadParam param)
读取由索引的图像imageIndex
并返回一个IIOImage
包含图像,缩略图和相关联的图像元数据,使用所提供的ImageReadParam
。Iterator<IIOImage>
readAll(Iterator<? extends ImageReadParam> params)
返回Iterator
包含所有图像,缩略图和元数据,开始由下式给出的指数在getMinIndex
,从形式的输入源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
的数组,如果不支持本地化,null
。
-
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
将保持0无论任何读操作。ignoreMetadata
参数(如果设置为true
)允许读者忽略读取期间遇到的任何元数据。 在后续调用getStreamMetadata
种getImageMetadata
方法可能会返回null
和IIOImage
从返回readAll
可能返回null
从他们getMetadata
方法。 设置此参数可能会使读者更有效地工作。 读者可以选择忽略此设置并正常返回元数据。子类应该注意根据前一个流来删除任何缓存的信息,例如标题信息或部分解码的图像数据。
的一般使用
Object
比其他ImageInputStream
旨在用于直接与捕获设备或图像协议交互的读取器。 这套法律课由读者服务提供商的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
将保持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
如果当前输入源已经被标记为允许元数据通过传递被忽略true
为ignoreMetadata
参数传递给setInput
方法。- 结果
-
true
如果元数据可能被忽略。 - 另请参见:
-
setInput(java.lang.Object, boolean, boolean)
-
getMinIndex
public int getMinIndex()
返回读取图像,缩略图或图像元数据的最低有效索引。 如果seekForwardOnly()
为false
,则该值通常保持为0,表示随机访问是可能的。 否则,它将包含最近访问的索引的值,并以单调方式增加。- 结果
- 阅读的最低法定指数。
-
getAvailableLocales
public Locale[] getAvailableLocales()
返回可用于本地化警告侦听器和压缩设置的Locale
s的数组。 返回值为null
表示不支持本地化。如果
availableLocales
实例变量为非null
,默认实现将返回克隆,否则返回null
。- 结果
-
的阵列
Locale
可用于作为参数为ssetLocale
,或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
而不执行搜索。 - 结果
-
如
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
。所有图像保证支持简单的随机访问或保证不支持简单随机访问的
false
分别返回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)
,ImageReadParam.setDestinationType(ImageTypeSpecifier)
-
getDefaultReadParam
public ImageReadParam getDefaultReadParam()
返回适用于此格式的默认对象ImageReadParam
。 所有子类应为所有参数定义一组默认值,并使用此调用返回它们。 可以在设置输入源之前调用此方法。默认实现构造并返回不允许源缩放的新的
ImageReadParam
对象( 即 ,它返回new ImageReadParam()
。- 结果
-
可以使用一组默认设置来控制解码过程的
ImageReadParam
对象。
-
getStreamMetadata
public abstract IIOMetadata getStreamMetadata() throws IOException
返回一个IIOMetadata
对象,表示与输入源整体相关的元数据(即不与任何特定图像相关联),如果阅读器不支持读取元数据,则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
- aSet
包含可能包含在检索到的文档中的节点的名称。 - 结果
-
一个
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
- aSet
包含可能包含在检索到的文档中的节点的名称。 - 结果
-
一个
IIOMetadata
对象,或null
。 - 异常
-
IllegalStateException
- 如果输入源尚未设置。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IllegalArgumentException
- 如果formatName
是null
。 -
IllegalArgumentException
- 如果nodeNames
是null
。 -
IOException
- 读取时是否发生错误。
-
read
public BufferedImage read(int imageIndex) throws IOException
读取imageIndex
索引的图像,并将其作为完整的BufferedImage
返回,使用默认值ImageReadParam
。 这是一个方便的方法,调用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
索引的图像,并将其作为完整的BufferedImage
返回,使用附带的ImageReadParam
。将使用
getDestination
方法定义的算法选择实际的BufferedImage
返回getDestination
。任何注册
IIOReadProgressListener
对象将通过调用它们的通知imageStarted
方法,然后通过调用其imageProgress
方法读取进展。 最后他们将会调用它们的imageComplete
方法。IIOReadUpdateListener
对象可以在其他时间读出期间像素被解码被更新。 最后,IIOReadWarningListener
对象将收到在解码期间发生的任何非致命警告的通知。要读取的源频带组和要写入的目标频带由所提供的
ImageReadParam
上的getSourceBands
和getDestinationBands
ImageReadParam
。 如果由这些方法返回的数组的长度不同,则源频带集包含较大的可用源索引,或者目标频带集合包含大于最大合法目标索引的索引的索引,抛出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
ImageReadParam
。 如果这些方法返回的数组的长度不同,则源频带集包含一个较大的索引,即最大的可用源索引,或者目标频段集合包含大于最大合法目标索引的索引,抛出一个IllegalArgumentException
。无论区域设置如何,缩略图将全部返回。
如果提供的
ImageReadParam
包含此读卡器不支持的可选设置值( 例如源渲染大小或特定于格式的设置),则这些值将被忽略。- 参数
-
imageIndex
- 要检索的图像的索引。 -
param
-一个ImageReadParam
用来控制读取过程中,或null
。 - 结果
-
包含图像的期望部分,一组缩略图和相关联的图像元数据的
IIOImage
。 - 异常
-
IllegalStateException
- 如果输入源未设置。 -
IndexOutOfBoundsException
- 如果提供的索引超出范围。 -
IllegalArgumentException
- 如果由param.getSourceBands
和param.getDestinationBands
指定的源和目标频带param.getSourceBands
param.getDestinationBands
不同或包括超出界限的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 如果在阅读期间发生错误。
-
readAll
public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params) throws IOException
返回Iterator
包含所有图像,缩略图和元数据,开始由下式给出的指数在getMinIndex
,从形式的输入源IIOImage
对象。 提供一个包含ImageReadParam
对象的Iterator
; 从输入源读取的每个图像消耗一个元素,直到没有更多的图像可用。 如果读取的参数Iterator
用尽了元素,但是仍然有更多的图像可以从输入源,默认读参数用于剩余的图像。如果
params
为null
,则所有图像都将使用默认阅读参数。实际
BufferedImage
由返回引用IIOImage
将使用由定义的算法来选择getDestination
方法。任何已注册的
IIOReadProgressListener
对象将通过其sequenceStarted
方法一次通知。 然后,对于每个图像解码,就会有一个电话imageStarted
,然后调用imageProgress
作为读取进展,最后到imageComplete
。sequenceComplete
方法将在最后一个图像解码后调用。IIOReadUpdateListener
对象可以在其他时间读出期间像素被解码被更新。 最后,IIOReadWarningListener
对象将收到在解码期间发生的任何非致命警告的通知。要读取的源频带组和要写入的目标频带由所提供的
ImageReadParam
和getDestinationBands
调用getSourceBands
和getDestinationBands
确定。 如果这些方法返回的数组的长度不同,则源频带集包含一个较大的索引,即最大的可用源索引,或者目标频带组包含大于最大合法目的地索引的索引,抛出一个IllegalArgumentException
。无论区域设置如何,缩略图将全部返回。
如果提供的任何
ImageReadParam
包含此读卡器不支持的可选设置值( 例如源渲染大小或任何特定于格式的设置),它们将被忽略。- 参数
-
params
- 一个Iterator
包含ImageReadParam
对象。 - 结果
-
一个
Iterator
表示输入源的内容为IIOImage
s。 - 异常
-
IllegalStateException
- 如果输入源尚未设置。 -
IllegalArgumentException
-如果任何非null
的元件params
不是ImageReadParam
。 -
IllegalArgumentException
- 如果由param.getSourceBands
和param.getDestinationBands
指定的源和目标频带的长度不同或包括超出界限的索引。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IOException
- 读取时是否发生错误。 - 另请参见:
-
ImageReadParam
,IIOImage
-
canReadRaster
public boolean canReadRaster()
返回true
如果此插件支持读取只是一个Raster
像素数据。 如果此方法返回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
返回给定图像中瓦片(0,0)左上角的X坐标。瓦片网格X偏移总是具有相同值(通常为0)的读取器可以返回该值而不访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。
默认实现只返回0,这对于大多数格式的非平铺图像和平铺图像是正确的。 支持平铺(0,0)偏移量的读者应该覆盖此方法。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 瓦片网格的X偏移量。
- 异常
-
IllegalStateException
- 如果需要输入源来确定返回值,但没有设置。 -
IndexOutOfBoundsException
- 如果必须访问映像以确定返回值,但提供的索引超出范围。 -
IOException
- 读数时是否发生错误。
-
getTileGridYOffset
public int getTileGridYOffset(int imageIndex) throws IOException
返回给定图像中瓦片(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
- 要检索的图块的列索引(以0开头)。 -
tileY
- 要检索的图块的行索引(以0开头)。 - 结果
-
瓷砖为
BufferedImage
。 - 异常
-
IllegalStateException
- 如果输入源尚未设置。 -
IndexOutOfBoundsException
- 如果imageIndex
是超出范围。 -
IllegalArgumentException
- 如果图块索引超出界限。 -
IOException
- 读取时是否发生错误。
-
readTileRaster
public Raster readTileRaster(int imageIndex, int tileX, int tileY) throws IOException
返回一个新的Raster
对象,其中包含来自图块的原始像素数据,而不应用任何颜色转换。 应用程序必须确定如何通过其他方式解释像素数据。如果
canReadRaster()
返回false
,此方法将抛出UnsupportedOperationException
。默认实现检查是否支持阅读
Raster
,如果是readRaster(imageIndex, null)
,如果tileX
和tileY
为0,或者抛出一个IllegalArgumentException
否则。- 参数
-
imageIndex
- 要检索的图像的索引。 -
tileX
- 要检索的图块的列索引(以0开头)。 -
tileY
- 要检索的图块的行索引(以0开头)。 - 结果
-
瓷砖为
Raster
。 - 异常
-
UnsupportedOperationException
- 如果这个插件不支持阅读原始的Raster
s。 -
IllegalArgumentException
- 如果图块索引超出范围。 -
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
),false
时将忽略输入源是否已经设置退回或是否imageIndex
是在边界。如果
getNumThumbnails
返回大于0的值,则默认实现将返回true
。- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
-
true
如果给定的图像有缩略图。 - 异常
-
IllegalStateException
- 如果阅读器支持缩略图,但输入源尚未设置。 -
IndexOutOfBoundsException
- 如果读者支持缩略图,但imageIndex
是超出范围。 -
IOException
- 读取时是否发生错误。
-
getNumThumbnails
public int getNumThumbnails(int imageIndex) throws IOException
返回与给定图像相关联的缩略图预览图像的数量。 如果格式不支持缩略图,(readerSupportsThumbnails
返回false
),0
时将忽略输入源是否已经设置退回或是否imageIndex
是在边界。默认实现返回0,而不检查其参数。
- 参数
-
imageIndex
- 要查询的图像的索引。 - 结果
- 与给定图像相关联的缩略图数量。
- 异常
-
IllegalStateException
- 如果阅读器支持缩略图,但输入源尚未设置。 -
IndexOutOfBoundsException
- 如果读者支持缩略图,但imageIndex
是超出范围。 -
IOException
- 读取时是否发生错误。
-
getThumbnailWidth
public int getThumbnailWidth(int imageIndex, int thumbnailIndex) throws IOException
返回由索引的缩略图的预览图像的宽度thumbnailIndex
,与由索引的图像相关联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
。如果读者不支持缩略图,(
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()
返回true
是否已经做出了中止当前读取操作的请求,因为读者被实例化或clearAbortRequest
被调用。- 结果
-
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
s的缩略图读取的开始广播。 子类可以方便地使用这种方法。- 参数
-
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
s的渐进通过开始广播。 子类可以方便地使用这种方法。- 参数
-
theImage
-BufferedImage
正在更新。 -
pass
- 当前通过的索引,以0开头。 -
minPass
- 将被解码的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
s的数组,表示目的地受影响的一组。
-
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
- 将被解码的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
s的缩略图IIOReadUpdateListener
通过thumbnailPassComplete
。 子类可以方便地使用这种方法。- 参数
-
theThumbnail
- 正在更新的BufferedImage
缩略图。
-
processWarningOccurred
protected void processWarningOccurred(String warning)
通过拨打其warningOccurred
方法向所有注册的IIOReadWarningListener
发送警告信息。 子类可以方便地使用这种方法。- 参数
-
warning
- 要发送的警告消息。 - 异常
-
IllegalArgumentException
- 如果warning
是null
。
-
processWarningOccurred
protected void processWarningOccurred(String baseName, String keyword)
通过使用从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
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
- aImageReadParam
或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
参数的width
height
。- 参数
-
param
-一个ImageReadParam
被用于获取目标图像或图像类型,或null
。 -
imageTypes
- 一个Iterator
的ImageTypeSpecifier
s,指示合法的图像类型,默认为第一个。 -
width
- 要解码的图像或图块的真实宽度。 -
height
- 正在解码的图像或瓦片的真实宽度。 - 结果
-
应写入解码像素数据的
BufferedImage
。 - 异常
-
IIOException
-如果ImageTypeSpecifier
由指定param
不会匹配任何法律措施的imageTypes
。 -
IllegalArgumentException
- 如果imageTypes
为null
或为空,或者从其中检索不是类型为ImageTypeSpecifier
的对象。 -
IllegalArgumentException
- 如果生成的图像的宽度或高度小于1。 -
IllegalArgumentException
- 如果width
和height
的产品大于Integer.MAX_VALUE
。
-
-