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