模块 java.desktop

类 ImageReader

java.lang.Object
javax.imageio.ImageReader

public abstract class ImageReader extends Object
用于图像解析和解码的抽象超类。此类必须由在 Java 图像 I/O 框架上下文中读取图像的类进行子类化。

ImageReader 对象通常由特定格式的服务提供者接口 (SPI) 类实例化。服务提供商类(例如 ImageReaderSpi 的实例)在 IIORegistry 中注册,后者将它们用于格式识别和可用格式读取器和写入器的呈现。

设置输入源时(使用 setInput 方法),它可能被标记为“仅向前搜索”。此设置意味着包含在输入源中的图像将仅按顺序读取,可能允许阅读器避免缓存包含与先前已读取图像相关联的数据的输入部分。

参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected Locale[]
    可用于本地化警告消息的 Locale 数组,如果不支持本地化,则为 null 数组。
    protected boolean
    true 如果当前输入源已被标记为允许元数据被 setInput 忽略。
    protected Object
    ImageInputStream 或其他 ObjectsetInput 检索并由 getInput 检索。
    protected Locale
    当前用于本地化的 Locale,如果未设置则为 null
    protected int
    读取的最小有效索引,初始为 0。
    protected ImageReaderSpi
    实例化此对象的 ImageReaderSpi,如果其身份未知或不存在,则为 null
    当前注册的 IIOReadProgressListenerList,默认初始化为 null,与空的 List 同义。
    protected boolean
    true 如果当前输入源已被 setInput 标记为仅允许前向搜索。
    当前注册的 IIOReadUpdateListenerList,默认初始化为 null,与空的 List 同义。
    当前注册的 IIOReadWarningListenerList,默认初始化为 null,与空的 List 同义。
    protected List<Locale>
    与每个当前注册的 IIOReadWarningListener 关联的 LocaleList,默认初始化为 null,它与空的 List 同义。
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    ImageReader(ImageReaderSpi originatingProvider)
    构造一个 ImageReader 并将其 originatingProvider 字段设置为提供的值。
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    请求中止任何当前读取操作。
    protected boolean
    如果在实例化读取器或调用 clearAbortRequest 后发出了中止当前读取操作的请求,则返回 true
    void
    IIOReadProgressListener 添加到已注册进度监听器列表中。
    void
    IIOReadUpdateListener 添加到已注册的更新监听器列表中。
    void
    IIOReadWarningListener 添加到已注册的警告监听器列表中。
    boolean
    如果此插件仅支持读取 Raster 像素数据,则返回 true
    protected static void
    checkReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands)
    读者可以使用一种实用方法来测试 ImageReadParam 的源和目标波段设置的有效性。
    protected void
    清除任何先前的中止请求。
    protected static void
    computeRegions(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion)
    计算源感兴趣区域和目标感兴趣区域,同时考虑源图像的宽度和高度、可选的目标图像和可选的 ImageReadParam
    void
    允许释放此对象持有的任何资源。
    float
    getAspectRatio(int imageIndex)
    返回给定图像的纵横比(即宽度除以高度)作为 float
    返回可用于本地化警告监听器和压缩设置的 Locale 数组。
    返回适合此格式的默认 ImageReadParam 对象。
    protected static BufferedImage
    getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height)
    返回应写入解码像素数据的BufferedImage
    返回一个 String 标识输入源的格式。
    abstract int
    getHeight(int imageIndex)
    返回输入源中给定图像的高度(以像素为单位)。
    abstract IIOMetadata
    getImageMetadata(int imageIndex)
    返回包含与给定图像关联的元数据的 IIOMetadata 对象,如果读取器不支持读取元数据、设置为忽略元数据或没有可用元数据,则返回 null
    getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames)
    返回一个 IIOMetadata 对象,表示与给定图像关联的元数据,或者 null 如果读取器不支持读取元数据或没有可用的元数据。
    getImageTypes(int imageIndex)
    ImageTypeSpecifiers s 的形式返回一个 Iterator 包含可能的图像类型,给定图像可能被解码为这些图像类型。
    返回先前设置为输入源的 ImageInputStream 或其他 Object
    返回当前设置的 Locale ,如果没有设置则返回 null
    int
    返回读取图像、缩略图或图像元数据的最低有效索引。
    abstract int
    getNumImages(boolean allowSearch)
    返回当前输入源可用的图像数量,不包括缩略图。
    int
    getNumThumbnails(int imageIndex)
    返回与给定图像关联的缩略图预览图像的数量。
    返回在构造函数中传入的 ImageReaderSpi
    getRawImageType(int imageIndex)
    返回一个 ImageTypeSpecifier 指示 SampleModelColorModel 最接近代表图像的“原始”内部格式。
    protected static Rectangle
    getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight)
    读者可以使用一种实用方法来计算应读取的源图像区域,同时考虑所提供的 ImageReadParam 中的任何源区域和子采样偏移设置。
    abstract IIOMetadata
    返回一个 IIOMetadata 对象,表示与整个输入源相关联的元数据(即,不与任何特定图像相关联),或者 null 如果读取器不支持读取元数据,设置为忽略元数据,或者如果没有可用的元数据。
    getStreamMetadata(String formatName, Set<String> nodeNames)
    返回一个 IIOMetadata 对象,表示与整个输入源关联的元数据(即,不与任何特定图像关联)。
    int
    getThumbnailHeight(int imageIndex, int thumbnailIndex)
    返回由 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
    如果通过将 true 作为 ignoreMetadata 参数传递给 setInput 方法,将当前输入源标记为允许忽略元数据,则返回 true
    boolean
    isImageTiled(int imageIndex)
    如果图像被组织成,则返回 true瓷砖,即大小相等的不重叠矩形。
    boolean
    isRandomAccessEasy(int imageIndex)
    如果给定图像的存储格式对随机访问像素没有固有障碍,则返回 true
    boolean
    如果当前输入源已被标记为仅通过将 true 作为 seekForwardOnly 参数传递给 setInput 方法来向前搜索,则返回 true
    protected void
    通过调用它们的 imageComplete 方法向所有注册的 IIOReadProgressListener 广播图像读取的完成。
    protected void
    processImageProgress(float percentageDone)
    通过调用它们的 imageProgress 方法向所有已注册的 IIOReadProgressListener 广播当前图像完成百分比。
    protected void
    processImageStarted(int imageIndex)
    通过调用它们的 imageStarted 方法向所有已注册的 IIOReadProgressListener 广播图像读取的开始。
    protected void
    processImageUpdate(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
    通过调用它们的 imageUpdate 方法向所有已注册的 IIOReadUpdateListener 广播一组样本的更新。
    protected void
    通过调用它们的 passComplete 方法向所有已注册的 IIOReadUpdateListener 广播渐进传递的结束。
    protected void
    processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
    通过调用它们的 passStarted 方法向所有已注册的 IIOReadUpdateListener 广播渐进传递的开始。
    protected void
    通过调用它们的 readAborted 方法向所有已注册的 IIOReadProgressListener 广播读取已中止。
    protected void
    通过调用它们的 sequenceComplete 方法向所有已注册的 IIOReadProgressListener 广播图像读取序列的完成。
    protected void
    processSequenceStarted(int minIndex)
    通过调用它们的 sequenceStarted 方法向所有已注册的 IIOReadProgressListener 广播一系列图像读取的开始。
    protected void
    通过调用它们的 thumbnailComplete 方法向所有已注册的 IIOReadProgressListener 广播缩略图读取的完成。
    protected void
    通过调用它们的 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 s。
    protected void
    通过调用它们的 warningOccurred 方法向所有已注册的 IIOReadWarningListener 广播一条警告消息。
    protected void
    processWarningOccurred(String baseName, String keyword)
    通过使用从 ResourceBundle 获取的字符串调用它们的 warningOccurred 方法,向所有已注册的 IIOReadWarningListener 广播本地化警告消息。
    read(int imageIndex)
    读取由 imageIndex 索引的图像并将其作为完整的 BufferedImage 返回,使用默认值 ImageReadParam
    abstract BufferedImage
    read(int imageIndex, ImageReadParam param)
    使用提供的 ImageReadParam 读取由 imageIndex 索引的图像并将其作为完整的 BufferedImage 返回。
    readAll(int imageIndex, ImageReadParam param)
    使用提供的 ImageReadParam 读取由 imageIndex 索引的图像并返回包含图像、缩略图和关联图像元数据的 IIOImage
    readAll(Iterator<? extends ImageReadParam> params)
    IIOImage 对象的形式从输入源返回包含所有图像、缩略图和元数据的 Iterator,从 getMinIndex 给出的索引开始。
    readAsRenderedImage(int imageIndex, ImageReadParam param)
    返回一个 RenderedImage 对象,其中包含由 imageIndex 索引的图像的内容。
    boolean
    如果此阅读器理解的图像格式支持与其关联的缩略图预览图像,则返回 true
    readRaster(int imageIndex, ImageReadParam param)
    返回一个新的 Raster 对象,其中包含来自图像流的原始像素数据,没有应用任何颜色转换。
    readThumbnail(int imageIndex, int thumbnailIndex)
    返回由 thumbnailIndex 索引的缩略图预览图像,与 ImageIndex 索引的图像关联为 BufferedImage
    readTile(int imageIndex, int tileX, int tileY)
    读取 tileXtileY 参数指示的图块,将其作为 BufferedImage 返回。
    readTileRaster(int imageIndex, int tileX, int tileY)
    返回一个新的 Raster 对象,其中包含图块中的原始像素数据,未应用任何颜色转换。
    void
    删除所有当前注册的 IIOReadProgressListener 对象。
    void
    删除所有当前注册的 IIOReadUpdateListener 对象。
    void
    删除所有当前注册的 IIOReadWarningListener 对象。
    void
    从已注册进度监听器列表中删除 IIOReadProgressListener
    void
    从已注册更新监听器列表中删除 IIOReadUpdateListener
    void
    从已注册的错误监听器列表中删除 IIOReadWarningListener
    void
    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 设置为给定值。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • originatingProvider

      protected ImageReaderSpi  originatingProvider
      实例化此对象的 ImageReaderSpi,如果其身份未知或不存在,则为 null。默认情况下,它被初始化为 null
    • input

      protected Object  input
      ImageInputStream 或其他 ObjectsetInput 检索并由 getInput 检索。默认情况下,它被初始化为 null
    • seekForwardOnly

      protected boolean seekForwardOnly
      true 如果当前输入源已被 setInput 标记为仅允许前向搜索。默认情况下,值为 false
      参见:
    • ignoreMetadata

      protected boolean ignoreMetadata
      true 如果当前输入源已被标记为允许元数据被 setInput 忽略。默认情况下,值为 false
      参见:
    • minIndex

      protected int minIndex
      用于读取的最小有效索引,最初为 0。当 seekForwardOnlytrue 时,各种方法可能会在尝试访问与具有较低索引的图像关联的数据时抛出 IndexOutOfBoundsException
      参见:
    • availableLocales

      protected Locale [] availableLocales
      可用于本地化警告消息的 Locale 数组,如果不支持本地化,则为 null 数组。
    • locale

      protected Locale  locale
      当前用于本地化的 Locale,如果未设置则为 null
    • warningListeners

      protected List <IIOReadWarningListener > warningListeners
      当前注册的 IIOReadWarningListenerList,默认初始化为 null,与空的 List 同义。
    • warningLocales

      protected List <Locale > warningLocales
      与每个当前注册的 IIOReadWarningListener 关联的 LocaleList,默认初始化为 null,它与空的 List 同义。
    • progressListeners

      protected List <IIOReadProgressListener > progressListeners
      当前注册的 IIOReadProgressListenerList,默认初始化为 null,与空的 List 同义。
    • updateListeners

      protected List <IIOReadUpdateListener > updateListeners
      当前注册的 IIOReadUpdateListenerList,默认初始化为 null,与空的 List 同义。
  • 构造方法详细信息

    • ImageReader

      protected ImageReader(ImageReaderSpi  originatingProvider)
      构造一个 ImageReader 并将其 originatingProvider 字段设置为提供的值。

      使用扩展的子类应该提供一个带有签名 (ImageReaderSpi,Object) 的构造函数,以便检索扩展对象。如果扩展对象不合适,则应抛出 IllegalArgumentException

      参数:
      originatingProvider - 调用此构造函数的 ImageReaderSpinull
  • 方法详情

    • getFormatName

      public String  getFormatName() throws IOException
      返回一个 String 标识输入源的格式。

      默认实现返回 originatingProvider.getFormatNames()[0] 。可能没有原始服务提供者或需要不同命名策略的实现应该覆盖此方法。

      返回:
      格式名称,作为 String
      抛出:
      IOException - 如果从输入源读取信息时发生错误。
    • getOriginatingProvider

      public ImageReaderSpi  getOriginatingProvider()
      返回在构造函数中传入的 ImageReaderSpi。请注意,此值可能是 null
      返回:
      一个 ImageReaderSpinull
      参见:
    • setInput

      public void setInput(Object  input, boolean seekForwardOnly, boolean ignoreMetadata)
      将要使用的输入源设置为给定的 ImageInputStream 或其他 Object 。必须在使用任何查询或读取方法之前设置输入源。如果 inputnull ,任何当前设置的输入源都将被删除。无论如何,minIndex的值都会被初始化为0。

      seekForwardOnly 参数控制 getMinIndex 返回的值是否会随着每个图像(或缩略图,或图像元数据)被读取而增加。如果 seekForwardOnly 为真,则调用 read(index) 将抛出 IndexOutOfBoundsException if index < this.minIndex ;否则,minIndex 的值将被设置为 index。如果 seekForwardOnlyfalse ,则 minIndex 的值将保持为 0,而不管任何读取操作。

      ignoreMetadata 参数(如果设置为 true )允许读取器忽略读取期间遇到的任何元数据。对 getStreamMetadatagetImageMetadata 方法的后续调用可能会返回 null ,而从 readAll 返回的 IIOImage 可能会从它们的 getMetadata 方法返回 null 。设置此参数可以让读者更有效地工作。读者可以选择忽略此设置并正常返回元数据。

      子类应注意删除基于先前流的任何缓存信息,例如标头信息或部分解码的图像数据。

      使用 Object 而不是 ImageInputStream 是为了直接与捕获设备或成像协议交互的读者。合法类集由读者服务提供商的getInputTypes方法公布;大多数读者将返回一个仅包含 ImageInputStream.class 的单元素数组,以表明他们只接受一个 ImageInputStream

      默认实现根据 originatingProvider.getInputTypes() 返回的列表检查 input 参数,如果参数不是列表中其中一个类的实例,则失败。如果原始提供者设置为 null ,则只有当输入是 ImageInputStream 时才会接受输入。

      参数:
      input - ImageInputStream 或其他 Object 用于未来解码。
      seekForwardOnly - 如果是 true ,图像和元数据只能从该输入源按升序读取。
      ignoreMetadata - 如果是 true,元数据在读取期间可能会被忽略。
      抛出:
      IllegalArgumentException - 如果 input 不是原始服务提供商的 getInputTypes 方法返回的类之一的实例,或者不是 ImageInputStream
      参见:
    • setInput

      public void setInput(Object  input, boolean seekForwardOnly)
      将要使用的输入源设置为给定的 ImageInputStream 或其他 Object 。必须在使用任何查询或读取方法之前设置输入源。如果 inputnull ,任何当前设置的输入源都将被删除。无论如何,minIndex的值都会被初始化为0。

      seekForwardOnly 参数控制 getMinIndex 返回的值是否会随着每个图像(或缩略图,或图像元数据)被读取而增加。如果 seekForwardOnly 为真,则调用 read(index) 将抛出 IndexOutOfBoundsException if index < this.minIndex ;否则,minIndex 的值将被设置为 index。如果 seekForwardOnlyfalse ,则 minIndex 的值将保持为 0,而不管任何读取操作。

      此方法等效于 setInput(input, seekForwardOnly, false)

      参数:
      input - ImageInputStream 或其他 Object 用于未来解码。
      seekForwardOnly - 如果是 true ,图像和元数据只能从该输入源按升序读取。
      抛出:
      IllegalArgumentException - 如果 input 不是原始服务提供商的 getInputTypes 方法返回的类之一的实例,或者不是 ImageInputStream
      参见:
    • setInput

      public void setInput(Object  input)
      将要使用的输入源设置为给定的 ImageInputStream 或其他 Object 。必须在使用任何查询或读取方法之前设置输入源。如果 inputnull ,任何当前设置的输入源都将被删除。无论如何,minIndex的值都会被初始化为0。

      此方法等效于 setInput(input, false, false)

      参数:
      input - ImageInputStream 或其他 Object 用于未来解码。
      抛出:
      IllegalArgumentException - 如果 input 不是原始服务提供商的 getInputTypes 方法返回的类之一的实例,或者不是 ImageInputStream
      参见:
    • getInput

      public Object  getInput()
      返回先前设置为输入源的 ImageInputStream 或其他 Object。如果未设置输入源,则返回null
      返回:
      将用于未来解码的 Objectnull
      参见:
    • isSeekForwardOnly

      public boolean isSeekForwardOnly()
      如果当前输入源已被标记为仅通过将 true 作为 seekForwardOnly 参数传递给 setInput 方法来向前搜索,则返回 true
      返回:
      true 如果输入源仅向前搜索。
      参见:
    • isIgnoringMetadata

      public boolean isIgnoringMetadata()
      如果通过将 true 作为 ignoreMetadata 参数传递给 setInput 方法,将当前输入源标记为允许忽略元数据,则返回 true
      返回:
      true 如果可以忽略元数据。
      参见:
    • getMinIndex

      public int getMinIndex()
      返回读取图像、缩略图或图像元数据的最低有效索引。如果 seekForwardOnly()false ,这个值通常会保持为 0,表示随机访问是可能的。否则,它将包含最近访问的索引的值,并以单调方式增加。
      返回:
      阅读的最低法定索引。
    • getAvailableLocales

      public Locale [] getAvailableLocales()
      返回可用于本地化警告监听器和压缩设置的 Locale 数组。 null 的返回值表示不支持本地化。

      默认实现返回 availableLocales 实例变量的克隆,如果它是非 null ,否则返回 null

      返回:
      可以用作 setLocalenull 的参数的 Locale 数组。
    • setLocale

      public void setLocale(Locale  locale)
      将此 ImageReader 的当前 Locale 设置为给定值。 null 的值会删除任何先前的设置,并指示阅读器应根据其认为合适的方式进行本地化。
      参数:
      locale - 所需的 Localenull
      抛出:
      IllegalArgumentException - 如果 locale 是非 null 但不是 getAvailableLocales 返回的值之一。
      参见:
    • getLocale

      public Locale  getLocale()
      返回当前设置的 Locale ,如果没有设置则返回 null
      返回:
      当前的 Localenull
      参见:
    • getNumImages

      public abstract int getNumImages(boolean allowSearch) throws IOException
      返回当前输入源可用的图像数量,不包括缩略图。

      请注意,某些图像格式(例如动画 GIF)不会指定流中存在多少图像。因此确定图像的数量将需要扫描整个流并且可能需要用于缓冲的存储器。如果要按顺序处理图像,则可以更有效地简单地调用 read 并增加索引,直到抛出 IndexOutOfBoundsException 以指示没有更多图像可用。 allowSearch 参数可以设置为 false 以指示不需要穷举搜索;返回值将是 -1,表示需要进行搜索。如果已指定输入并将 seekForwardOnly 设置为 true,则如果 allowSearch 设置为 true,此方法将抛出 IllegalStateException

      参数:
      allowSearch - 如果是 true ,即使需要搜索,也会返回真实的图像数量。如果是 false ,读者可能会在不执行搜索的情况下返回 -1
      返回:
      图像的数量,作为 int-1 如果 allowSearchfalse 并且需要搜索。
      抛出:
      IllegalStateException - 如果尚未设置输入源,或者如果已指定输入并将 seekForwardOnly 设置为 true
      IOException - 如果从输入源读取信息时发生错误。
      参见:
    • 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

      保证所有图像都支持轻松随机访问或保证不支持轻松随机访问的阅读器可以在不访问任何图像数据的情况下分别返回truefalse。在这种情况下,即使没有设置输入源或图像索引越界也没有必要抛出异常。

      默认实现返回 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 指示 SampleModelColorModel 最接近代表图像的“原始”内部格式。如果没有紧密匹配,则应返回保留图像中最多信息的类型。返回值也应包含在 getImageTypes 返回值列表中。

      默认实现仅返回 getImageType 提供的列表中的第一个条目。

      参数:
      imageIndex - 要查询的图像的索引。
      返回:
      一个ImageTypeSpecifier
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IOException - 如果从输入源读取格式信息时发生错误。
    • getImageTypes

      public abstract Iterator <ImageTypeSpecifier > getImageTypes(int imageIndex) throws IOException
      ImageTypeSpecifiers s 的形式返回一个 Iterator 包含可能的图像类型,给定图像可能被解码为这些图像类型。至少会返回一种合法的图像类型。

      迭代器的第一个元素应该是最“自然”的类型,用于以尽可能少的损失解码图像。例如,对于 JPEG 图像,第一个条目应该是 RGB 图像,即使图像数据在内部存储在 YCbCr 颜色空间中。

      参数:
      imageIndex - 要成为 retrieved 的图像的索引。
      返回:
      一个 Iterator 包含至少一个 ImageTypeSpecifier 表示用于解码当前给定图像的建议图像类型。
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IOException - 如果从输入源读取格式信息时发生错误。
      参见:
    • getDefaultReadParam

      public ImageReadParam  getDefaultReadParam()
      返回适合此格式的默认 ImageReadParam 对象。所有子类都应该为所有参数定义一组默认值,并通过此调用返回它们。在设置输入源之前可以调用此方法。

      默认实现构造并返回一个新的 ImageReadParam 对象,该对象不允许源缩放(IE,它返回 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 - 一个 Set 包含可能包含在检索到的文档中的节点名称。
      返回:
      一个 IIOMetadata 对象,或 null
      抛出:
      IllegalArgumentException - 如果 formatNamenull
      IllegalArgumentException - 如果 nodeNamesnull
      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

      在所有情况下,返回比绝对必要的更有能力的元数据对象是合法的。格式名称和节点名称只是提示,可以用来减少读者的工作量。

      在检查格式名称是否受支持后,默认实现仅返回调用 getImageMetadata(imageIndex) 的结果。如果不是,则返回 null

      参数:
      imageIndex - 要检索其元数据的图像的索引。
      formatName - 元数据格式名称,可用于从返回的 IIOMetadata 对象中检索文档。
      nodeNames - 一个 Set 包含可能包含在检索到的文档中的节点名称。
      返回:
      一个 IIOMetadata 对象,或 null
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IllegalArgumentException - 如果 formatNamenull
      IllegalArgumentException - 如果 nodeNamesnull
      IOException - 如果在读取过程中发生错误。
    • read

      public BufferedImage  read(int imageIndex) throws IOException
      读取由 imageIndex 索引的图像并将其作为完整的 BufferedImage 返回,使用默认值 ImageReadParam 。这是调用 read(imageIndex, null) 的便捷方法。

      返回的图像将根据从 getImageTypes 返回的第一个 ImageTypeSpecifier 进行格式化。

      任何已注册的 IIOReadProgressListener 对象都将通过调用它们的 imageStarted 方法得到通知,然后在读取过程中调用它们的 imageProgress 方法。最后他们的 imageComplete 方法将被调用。 IIOReadUpdateListener 对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener 对象将收到解码期间发生的任何非致命警告的通知。

      参数:
      imageIndex - 要检索的图像的索引。
      返回:
      图像的所需部分作为 BufferedImage
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IOException - 如果在读取过程中发生错误。
    • read

      public abstract BufferedImage  read(int imageIndex, ImageReadParam  param) throws IOException
      使用提供的 ImageReadParam 读取由 imageIndex 索引的图像并将其作为完整的 BufferedImage 返回。

      返回的实际 BufferedImage 将使用 getDestination 方法定义的算法进行选择。

      任何已注册的 IIOReadProgressListener 对象都将通过调用它们的 imageStarted 方法得到通知,然后在读取过程中调用它们的 imageProgress 方法。最后他们的 imageComplete 方法将被调用。 IIOReadUpdateListener 对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener 对象将收到解码期间发生的任何非致命警告的通知。

      要读取的源 band 和要写入的目标 band 的集合通过在提供的 ImageReadParam 上调用 getSourceBandsgetDestinationBands 来确定。如果这些方法返回的数组的长度不同,则源 band 集包含的索引大于最大可用源索引,或者目标 band 集包含的索引大于最大合法目标索引,则抛出 IllegalArgumentException

      如果提供的 ImageReadParam 包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。

      参数:
      imageIndex - 要检索的图像的索引。
      param - 用于控制读取过程的 ImageReadParam,或 null
      返回:
      图像的所需部分作为 BufferedImage
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IllegalArgumentException - 如果 param.getSourceBandsparam.getDestinationBands 指定的源和目标带的集合长度不同或包含超出范围的索引。
      IllegalArgumentException - 如果生成的图像的宽度或高度小于 1。
      IOException - 如果在读取过程中发生错误。
    • readAll

      public IIOImage  readAll(int imageIndex, ImageReadParam  param) throws IOException
      使用提供的 ImageReadParam 读取由 imageIndex 索引的图像并返回包含图像、缩略图和关联图像元数据的 IIOImage

      返回的 IIOImage 引用的实际 BufferedImage 将使用 getDestination 方法定义的算法进行选择。

      任何已注册的 IIOReadProgressListener 对象都将通过调用它们的 imageStarted 方法得到通知,然后在读取过程中调用它们的 imageProgress 方法。最后他们的 imageComplete 方法将被调用。 IIOReadUpdateListener 对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener 对象将收到解码期间发生的任何非致命警告的通知。

      要读取的源 band 和要写入的目标 band 的集合通过在提供的 ImageReadParam 上调用 getSourceBandsgetDestinationBands 来确定。如果这些方法返回的数组的长度不同,则源 band 集包含的索引大于最大可用源索引,或者目标 band 集包含的索引大于最大合法目标索引,则抛出 IllegalArgumentException

      无论区域设置如何,缩略图都将完整返回。

      如果提供的 ImageReadParam 包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),这些值将被忽略。

      参数:
      imageIndex - 要检索的图像的索引。
      param - 用于控制读取过程的 ImageReadParam,或 null
      返回:
      IIOImage 包含图像的所需部分、一组缩略图和关联的图像元数据。
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IllegalArgumentException - 如果 param.getSourceBandsparam.getDestinationBands 指定的源和目标带的集合长度不同或包含超出范围的索引。
      IllegalArgumentException - 如果生成的图像的宽度或高度小于 1。
      IOException - 如果在读取过程中发生错误。
    • readAll

      public Iterator <IIOImage > readAll(Iterator <? extends ImageReadParam > params) throws IOException
      IIOImage 对象的形式从输入源返回包含所有图像、缩略图和元数据的 Iterator,从 getMinIndex 给出的索引开始。提供了包含 ImageReadParam 个对象的 Iterator;从输入源读取的每个图像都会消耗一个元素,直到没有更多图像可用。如果读取参数 Iterator 用完了元素,但输入源中仍有更多图像可用,则默认读取参数将用于剩余图像。

      如果 paramsnull ,默认读取参数将用于所有图像。

      返回的 IIOImage 引用的实际 BufferedImage 将使用 getDestination 方法定义的算法进行选择。

      任何已注册的 IIOReadProgressListener 对象将通过调用它们的 sequenceStarted 方法一次得到通知。然后,对于解码的每个图像,将调用 imageStarted ,然后随着读取的进行调用 imageProgress ,最后调用 imageCompletesequenceComplete 方法将在最后一张图像解码后调用。 IIOReadUpdateListener 对象可能会在读取期间的其他时间随着像素被解码而更新。最后,IIOReadWarningListener 对象将收到解码期间发生的任何非致命警告的通知。

      要读取的源 band 和要写入的目标 band 的集合通过在提供的 ImageReadParam 上调用 getSourceBandsgetDestinationBands 来确定。如果这些方法返回的数组的长度不同,则源 band 集包含的索引大于最大可用源索引,或者目标 band 集包含的索引大于最大合法目标索引,则抛出 IllegalArgumentException

      无论区域设置如何,缩略图都将完整返回。

      如果提供的任何 ImageReadParam 包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。

      参数:
      params - 一个包含 ImageReadParam 个对象的 Iterator
      返回:
      Iterator 表示输入源的内容为 IIOImage s。
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IllegalArgumentException - 如果 params 的任何非 null 元素不是 ImageReadParam
      IllegalArgumentException - 如果 param.getSourceBandsparam.getDestinationBands 指定的源和目标带的集合长度不同或包含超出范围的索引。
      IllegalArgumentException - 如果生成的图像的宽度或高度小于 1。
      IOException - 如果在读取过程中发生错误。
      参见:
    • canReadRaster

      public boolean canReadRaster()
      如果此插件仅支持读取 Raster 像素数据,则返回 true。如果此方法返回 false ,调用 readRaster readTileRaster 将抛出 UnsupportedOperationException

      默认实现返回 false

      返回:
      true 如果此插件支持读取原始 Raster s。
      参见:
    • 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 - 如果在读取过程中发生错误。
      参见:
    • isImageTiled

      public boolean isImageTiled(int imageIndex) throws IOException
      如果图像被组织成,则返回 true瓷砖,即大小相等的不重叠矩形。

      阅读器插件可以选择是否在图像存储时显示图像中存在的平铺。当没有明确存在时,它甚至可以选择通告平铺。一般来说,只有在访问单个磁贴有一些优势(在速度或空间上)时,才应该公布磁贴。无论读取器是否宣传平铺,它都必须能够读取 ImageReadParam 中指定的任意矩形区域。

      保证所有图像都被平铺或保证不被平铺的阅读器可以在不访问任何图像数据的情况下分别返回truefalse。在这种情况下,即使没有设置输入源或图像索引越界也没有必要抛出异常。

      默认实现只返回 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
      读取 tileXtileY 参数指示的图块,将其作为 BufferedImage 返回。如果参数超出范围,则会抛出 IllegalArgumentException。如果图像未平铺,则值 0、0 将返回整个图像;任何其他值都会导致抛出 IllegalArgumentException

      此方法只是为了方便,等同于使用读取参数调用 read(int, ImageReadParam),指定源区域的偏移量为 tileX*getTileWidth(imageIndex)tileY*getTileHeight(imageIndex) 以及宽度和高度为 getTileWidth(imageIndex)getTileHeight(imageIndex);子采样因子为 1,偏移量为 0。要对图块进行子采样,请使用指定该区域和不同子采样参数的读取参数调用 read

      如果 tileXtileY 为 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 s,如果支持,则在 tileXtileY 为 0 时调用 readRaster(imageIndex, null) ,否则抛出 IllegalArgumentException

      参数:
      imageIndex - 要检索的图像的索引。
      tileX - 要检索的图块的列索引(从 0 开始)。
      tileY - 要检索的图块的行索引(从 0 开始)。
      返回:
      瓷砖作为 Raster
      抛出:
      UnsupportedOperationException - 如果此插件不支持读取原始 Raster s。
      IllegalArgumentException - 如果图块索引超出范围。
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果 imageIndex 超出范围。
      IOException - 如果在读取过程中发生错误。
      参见:
    • readAsRenderedImage

      public RenderedImage  readAsRenderedImage(int imageIndex, ImageReadParam  param) throws IOException
      返回一个 RenderedImage 对象,其中包含由 imageIndex 索引的图像的内容。默认情况下,返回的图像只是 read(imageIndex, param) 返回的 BufferedImage

      此方法的语义可能在几个方面不同于其他 read 方法。首先,可以忽略 ImageReadParam 中设置的任何目标图像和/或图像类型。其次,不能保证通常的监听器调用会被调用,或者如果调用是有意义的。这是因为返回的图像在返回时可能没有完全填充像素数据,或者实际上在任何时候都没有。

      如果提供的 ImageReadParam 包含此阅读器不支持的可选设置值(例如源渲染大小或任何特定于格式的设置),它们将被忽略。

      默认实现只调用 read(imageIndex, param)

      参数:
      imageIndex - 要检索的图像的索引。
      param - 用于控制读取过程的 ImageReadParam,或 null
      返回:
      提供图像视图的 RenderedImage 对象。
      抛出:
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的索引超出范围。
      IllegalArgumentException - 如果 param.getSourceBandsparam.getDestinationBands 指定的源和目标带的集合长度不同或包含超出范围的索引。
      IllegalArgumentException - 如果生成的图像的宽度或高度小于 1。
      IOException - 如果在读取过程中发生错误。
    • readerSupportsThumbnails

      public boolean readerSupportsThumbnails()
      如果此阅读器理解的图像格式支持与其关联的缩略图预览图像,则返回 true。默认实现返回 false

      如果此方法返回 falsehasThumbnailsgetNumThumbnails 将分别返回 false0 ,而 readThumbnail 将抛出 UnsupportedOperationException ,无论它们的参数如何。

      不支持缩略图的阅读器不需要实现任何与缩略图相关的方法。

      返回:
      true 如果支持缩略图。
    • hasThumbnails

      public boolean hasThumbnails(int imageIndex) throws IOException
      如果给定图像具有与其关联的缩略图预览图像,则返回 true。如果格式不支持缩略图(readerSupportsThumbnails返回false),无论输入源是否已设置或imageIndex是否在边界内,都将返回false

      如果 getNumThumbnails 返回大于 0 的值,则默认实现返回 true

      参数:
      imageIndex - 被查询图像的索引。
      返回:
      true 如果给定的图像有缩略图。
      抛出:
      IllegalStateException - 如果阅读器支持缩略图但尚未设置输入源。
      IndexOutOfBoundsException - 如果阅读器支持缩略图但 imageIndex 超出范围。
      IOException - 如果在读取过程中发生错误。
    • getNumThumbnails

      public int getNumThumbnails(int imageIndex) throws IOException
      返回与给定图像关联的缩略图预览图像的数量。如果格式不支持缩略图,(readerSupportsThumbnails返回false),无论输入源是否已设置或imageIndex是否在边界内,都将返回0

      默认实现返回 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 对象都将通过调用它们的 thumbnailStartedthumbnailProgressthumbnailComplete 方法得到通知。

      如果阅读器不支持缩略图,(readerSupportsThumbnails 返回 false ),无论输入源是否已设置或索引是否在边界内,都会抛出 UnsupportedOperationException

      默认实现抛出一个 UnsupportedOperationException

      参数:
      imageIndex - 要检索的图像的索引。
      thumbnailIndex - 要检索的缩略图的索引。
      返回:
      所需的缩略图为 BufferedImage
      抛出:
      UnsupportedOperationException - 如果不支持缩略图。
      IllegalStateException - 如果尚未设置输入源。
      IndexOutOfBoundsException - 如果提供的任一索引超出范围。
      IOException - 如果在读取过程中发生错误。
    • abort

      public void abort()
      请求中止任何当前读取操作。中止后图像的内容将是未定义的。

      读者应在每次读取操作开始时调用clearAbortRequest,并在读取过程中定期轮询abortRequested的值。

    • abortRequested

      protected boolean abortRequested()
      如果在实例化读取器或调用 clearAbortRequest 后发出了中止当前读取操作的请求,则返回 true
      返回:
      true 如果当前读取操作应该被中止。
      参见:
    • clearAbortRequest

      protected void clearAbortRequest()
      清除任何先前的中止请求。调用此方法后,abortRequested 将返回 false
      参见:
    • addIIOReadWarningListener

      public void addIIOReadWarningListener(IIOReadWarningListener  listener)
      IIOReadWarningListener 添加到已注册的警告监听器列表中。如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。发送给给定监听器的消息将被本地化,如果可能的话,以匹配当前的 Locale 。如果未设置 Locale,警告消息可能会根据读者认为合适的方式进行本地化。
      参数:
      listener - 要注册的 IIOReadWarningListener
      参见:
    • removeIIOReadWarningListener

      public void removeIIOReadWarningListener(IIOReadWarningListener  listener)
      从已注册的错误监听器列表中删除 IIOReadWarningListener。如果监听器之前未注册,或者如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要取消注册的 IIOReadWarningListener。
      参见:
    • removeAllIIOReadWarningListeners

      public void removeAllIIOReadWarningListeners()
      删除所有当前注册的 IIOReadWarningListener 对象。

      默认实现将 warningListenerswarningLocales 实例变量设置为 null

    • addIIOReadProgressListener

      public void addIIOReadProgressListener(IIOReadProgressListener  listener)
      IIOReadProgressListener 添加到已注册进度监听器列表中。如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要注册的 IIOReadProgressListener。
      参见:
    • removeIIOReadProgressListener

      public void removeIIOReadProgressListener(IIOReadProgressListener  listener)
      从已注册进度监听器列表中删除 IIOReadProgressListener。如果监听器之前未注册,或者如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要注销的 IIOReadProgressListener。
      参见:
    • removeAllIIOReadProgressListeners

      public void removeAllIIOReadProgressListeners()
      删除所有当前注册的 IIOReadProgressListener 对象。

      默认实现将 progressListeners 实例变量设置为 null

    • addIIOReadUpdateListener

      public void addIIOReadUpdateListener(IIOReadUpdateListener  listener)
      IIOReadUpdateListener 添加到已注册的更新监听器列表中。如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。当图像和缩略图被解码时,收听者将收到像素更新的通知,包括渐进通道的开始和结束。

      如果不存在更新监听,则读者可以选择对目标图像和/或缩略图的像素执行较少的更新,这可能会导致更有效的解码。

      例如,在渐进式 JPEG 解码中,每个通道都包含对一组系数的更新,如果存在听众,则必须将其转换为像素值并转换为每个通道的 RGB 颜色空间。如果没有收听者,则可以简单地累加系数并且仅对最终结果进行一次变换和颜色转换。

      无论是否执行中间更新,解码的最终结果都是相同的。因此,如果只需要最终图像,最好不要注册任何 IIOReadUpdateListener s。通常,当通过与本地 CPU 处理相比非常慢的网络连接获取图像时,渐进式更新最有效;通过快速连接,渐进式更新实际上可能会减慢图像的显示速度。

      参数:
      listener - 要注册的 IIOReadUpdateListener。
      参见:
    • removeIIOReadUpdateListener

      public void removeIIOReadUpdateListener(IIOReadUpdateListener  listener)
      从已注册更新监听器列表中删除 IIOReadUpdateListener。如果监听器之前未注册,或者如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要注销的 IIOReadUpdateListener。
      参见:
    • removeAllIIOReadUpdateListeners

      public void removeAllIIOReadUpdateListeners()
      删除所有当前注册的 IIOReadUpdateListener 对象。

      默认实现将 updateListeners 实例变量设置为 null

    • processSequenceStarted

      protected void processSequenceStarted(int minIndex)
      通过调用它们的 sequenceStarted 方法向所有已注册的 IIOReadProgressListener 广播一系列图像读取的开始。为方便起见,子类可以使用此方法。
      参数:
      minIndex - 正在读取的最低索引。
    • processSequenceComplete

      protected void processSequenceComplete()
      通过调用它们的 sequenceComplete 方法向所有已注册的 IIOReadProgressListener 广播图像读取序列的完成。为方便起见,子类可以使用此方法。
    • processImageStarted

      protected void processImageStarted(int imageIndex)
      通过调用它们的 imageStarted 方法向所有已注册的 IIOReadProgressListener 广播图像读取的开始。为方便起见,子类可以使用此方法。
      参数:
      imageIndex - 要读取的图像的索引。
    • processImageProgress

      protected void processImageProgress(float percentageDone)
      通过调用它们的 imageProgress 方法向所有已注册的 IIOReadProgressListener 广播当前图像完成百分比。为方便起见,子类可以使用此方法。
      参数:
      percentageDone - 当前完成百分比,如 float
    • processImageComplete

      protected void processImageComplete()
      通过调用它们的 imageComplete 方法向所有注册的 IIOReadProgressListener 广播图像读取的完成。为方便起见,子类可以使用此方法。
    • processThumbnailStarted

      protected void processThumbnailStarted(int imageIndex, int thumbnailIndex)
      通过调用它们的 thumbnailStarted 方法向所有已注册的 IIOReadProgressListener 广播缩略图读取的开始。为方便起见,子类可以使用此方法。
      参数:
      imageIndex - 与缩略图关联的图像索引。
      thumbnailIndex - 缩略图的索引。
    • processThumbnailProgress

      protected void processThumbnailProgress(float percentageDone)
      通过调用它们的 thumbnailProgress 方法向所有已注册的 IIOReadProgressListener 广播当前缩略图完成百分比。为方便起见,子类可以使用此方法。
      参数:
      percentageDone - 当前完成百分比,如 float
    • processThumbnailComplete

      protected void processThumbnailComplete()
      通过调用它们的 thumbnailComplete 方法向所有已注册的 IIOReadProgressListener 广播缩略图读取的完成。为方便起见,子类可以使用此方法。
    • processReadAborted

      protected void processReadAborted()
      通过调用它们的 readAborted 方法向所有已注册的 IIOReadProgressListener 广播读取已中止。为方便起见,子类可以使用此方法。
    • processPassStarted

      protected void processPassStarted(BufferedImage  theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
      通过调用它们的 passStarted 方法向所有已注册的 IIOReadUpdateListener 广播渐进传递的开始。为方便起见,子类可以使用此方法。
      参数:
      theImage - 正在更新的 BufferedImage
      pass - 当前通道的索引,从 0 开始。
      minPass - 将被解码的第一遍的索引。
      maxPass - 将被解码的最后一遍的索引。
      minX - 通道中包含的左上角像素的 X 坐标。
      minY - 通道中包含的左上角像素的 X 坐标。
      periodX - 像素之间的水平分隔。
      periodY - 像素之间的垂直分隔。
      bands - 一个 int 数组,指示目标的受影响波段集。
    • processImageUpdate

      protected void processImageUpdate(BufferedImage  theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
      通过调用它们的 imageUpdate 方法向所有已注册的 IIOReadUpdateListener 广播一组样本的更新。为方便起见,子类可以使用此方法。
      参数:
      theImage - 正在更新的 BufferedImage
      minX - 通道中包含的左上角像素的 X 坐标。
      minY - 通道中包含的左上角像素的 X 坐标。
      width - 正在更新的区域的总宽度,包括在 periodX > 1 时被跳过的像素。
      height - 正在更新的区域的总高度,包括在 periodY > 1 时被跳过的像素。
      periodX - 像素之间的水平分隔。
      periodY - 像素之间的垂直分隔。
      bands - 一个 int 数组,指示目标的受影响波段集。
    • processPassComplete

      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 s。为方便起见,子类可以使用此方法。
      参数:
      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 - 如果 warningnull
    • processWarningOccurred

      protected void processWarningOccurred(String  baseName, String  keyword)
      通过使用从 ResourceBundle 获取的字符串调用它们的 warningOccurred 方法,向所有已注册的 IIOReadWarningListener 广播本地化警告消息。为方便起见,子类可以使用此方法。
      参数:
      baseName - 一组包含本地化警告消息的 ResourceBundle 的基本名称。
      keyword - 用于在 ResourceBundle 集合中索引警告消息的关键字。
      抛出:
      IllegalArgumentException - 如果 baseNamenull
      IllegalArgumentException - 如果 keywordnull
      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 中的任何源区域和子采样偏移设置。 not 考虑了实际的子采样因子、目标大小和目标偏移量,因此必须进行进一步的裁剪。 computeRegions 方法执行所有必要的裁剪。
      参数:
      param - 正在使用的 ImageReadParam,或 null
      srcWidth - 源图像的宽度。
      srcHeight - 源图像的高度。
      返回:
      源区域为 Rectangle
    • computeRegions

      protected static void computeRegions(ImageReadParam  param, int srcWidth, int srcHeight, BufferedImage  image, Rectangle  srcRegion, Rectangle  destRegion)
      计算源感兴趣区域和目标感兴趣区域,同时考虑源图像的宽度和高度、可选的目标图像和可选的 ImageReadParam。源区域以整个源图像开始。然后将其剪辑到 ImageReadParam 中指定的源区域(如果指定的话)。

      如果任一目标偏移量为负,则裁剪源区域,使其左上角与目标图像的左上角重合,同时考虑子采样。然后将结果裁剪到右侧和底部的目标图像(如果指定了一个),同时考虑子采样和目标偏移量。

      类似地,目标区域从源图像开始,转换为 ImageReadParam 中给出的目标偏移量(如果有),最后裁剪到目标图像(如果有)。

      如果源区域或目标区域最终的宽度或高度为 0,则会抛出 IllegalArgumentException

      如果只需要源剪辑,则可以使用 getSourceRegion> 方法。

      参数:
      param - 一个 ImageReadParamnull
      srcWidth - 源图像的宽度。
      srcHeight - 源图像的高度。
      image - 将成为目标图像的 BufferedImagenull
      srcRegion - 一个 Rectangle 将填充感兴趣的源区域。
      destRegion - 一个 Rectangle 将填充感兴趣的目标区域。
      抛出:
      IllegalArgumentException - 如果 srcRegionnull
      IllegalArgumentException - 如果 dstRegionnull
      IllegalArgumentException - 如果生成的源或目标区域为空。
    • checkReadParamBandSettings

      protected static void checkReadParamBandSettings(ImageReadParam  param, int numSrcBands, int numDstBands)
      读者可以使用一种实用方法来测试 ImageReadParam 的源和目标波段设置的有效性。一旦读者知道输入流中存在的源图像的波段数和正在写入的目标图像的波段数,就可以调用此方法。

      该方法使用 getSourceBandsgetDestinationBands 方法从参数中检索源和目标波段设置数组(或者如果 paramnull 则认为它们是 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 中包含的其中一个后使用。

      如果 paramnull 或上述步骤没有产生图像或 ImageTypeSpecifier ,则使用从 imageTypes 参数获得的第一个值。通常,调用者会将 imageTypes 设置为 getImageTypes(imageIndex) 的值。

      接下来,通过调用 computeRegions 确定图像的尺寸。被解码图像的实际宽度和高度作为widthheight参数传入。

      参数:
      param - 用于获取目标图像或图像类型的 ImageReadParam,或 null
      imageTypes - Iterator of ImageTypeSpecifier s 指示合法图像类型,默认值优先。
      width - 正在解码的图像或图块的真实宽度。
      height - 正在解码的图像或图块的真实宽度。
      返回:
      应写入解码像素数据的BufferedImage
      抛出:
      IIOException - 如果 param 指定的 ImageTypeSpecifierimageTypes 中的任何合法值不匹配。
      IllegalArgumentException - 如果 imageTypesnull 或为空,或者如果从中检索到不是 ImageTypeSpecifier 类型的对象。
      IllegalArgumentException - 如果生成的图像的宽度或高度小于 1。
      IllegalArgumentException - 如果 widthheight 的乘积大于 Integer.MAX_VALUE