模块  java.desktop
软件包  javax.imageio

Class ImageReader


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

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

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

    另请参见:
    ImageWriterIIORegistryImageReaderSpi
    • 字段汇总

      字段  
      变量和类型 字段 描述
      protected Locale[] availableLocales
      的阵列 Locale其可以被用于定位的警告消息,或S 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
      A List当前注册 IIOReadProgressListener s,默认初始化为 null ,与空 List同义。
      protected boolean seekForwardOnly
      true如果当前输入源已被标记为仅允许通过 setInput进行前向搜索。
      protected List<IIOReadUpdateListener> updateListeners
      A List当前已注册 IIOReadUpdateListener s,默认初始化为 null ,与空 List同义。
      protected List<IIOReadWarningListener> warningListeners
      A List当前注册 IIOReadWarningListener s,默认初始化为 null ,与空 List同义。
      protected List<Locale> warningLocales
      ListLocale与每个当前注册的 IIOReadWarningListener相关联,默认情况下初始化为 null ,这与空 List同义。
    • 构造方法摘要

      构造方法  
      变量 构造器 描述
      protected ImageReader​(ImageReaderSpi originatingProvider)
      构造一个 ImageReader并将其 originatingProvider字段设置为提供的值。
    • 方法摘要

      所有方法  静态方法  实例方法 抽象方法  具体的方法 
      变量和类型 方法 描述
      void abort()
      请求中止任何当前读取操作。
      protected boolean abortRequested()
      如果自实例化读取器或 clearAbortRequest后已作出中止当前读取操作的请求,则返回 true
      void addIIOReadProgressListener​(IIOReadProgressListener listener)
      IIOReadProgressListener添加到已注册的进度监听器列表中。
      void addIIOReadUpdateListener​(IIOReadUpdateListener listener)
      IIOReadUpdateListener添加到已注册的更新侦听器列表中。
      void addIIOReadWarningListener​(IIOReadWarningListener listener)
      IIOReadWarningListener添加到已注册的警告侦听器列表中。
      boolean canReadRaster()
      如果此插件仅支持读取像素数据的Raster ,则返回true
      protected static void checkReadParamBandSettings​(ImageReadParam param, int numSrcBands, int numDstBands)
      读者可以使用的实用方法来测试 ImageReadParam的源和目标波段设置的 ImageReadParam
      protected void clearAbortRequest()
      清除任何先前的中止请求。
      protected static void computeRegions​(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion)
      计算感兴趣的源区域和目标感兴趣区域,考虑源图像的宽度和高度,可选的目标图像以及可选的 ImageReadParam
      void dispose()
      允许释放此对象持有的任何资源。
      float getAspectRatio​(int imageIndex)
      返回给定图像的宽高比(即宽度除以高度)为 float
      Locale[] getAvailableLocales()
      返回一个 Locale的数组,可用于本地化警告侦听器和压缩设置。
      ImageReadParam getDefaultReadParam()
      返回适用于此格式的默认 ImageReadParam对象。
      protected static BufferedImage getDestination​(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height)
      返回应写入解码像素数据的 BufferedImage
      String getFormatName()
      返回标识输入源格式的 String
      abstract int getHeight​(int imageIndex)
      返回输入源中给定图像的高度(以像素为单位)。
      abstract IIOMetadata getImageMetadata​(int imageIndex)
      返回一个 IIOMetadata与给定图像,或相关联的对象包含元数据 null如果读取器不支持读取元数据,被设置为忽略元数据,或者,如果没有元数据可用。
      IIOMetadata getImageMetadata​(int imageIndex, String formatName, Set<String> nodeNames)
      返回一个 IIOMetadata表示与给定图像,或相关联的元数据对象 null如果读取器不支持读取元数据或没有可用的。
      abstract Iterator<ImageTypeSpecifier> getImageTypes​(int imageIndex)
      返回 Iterator其中包含可以解码给定图像的可能图像类型,形式为 ImageTypeSpecifiers
      Object getInput()
      返回先前设置为输入源的 ImageInputStream或其他 Object
      Locale getLocale()
      返回当前设置 Locale ,或 null如果没有设置。
      int getMinIndex()
      返回用于读取图像,缩略图或图像元数据的最低有效索引。
      abstract int getNumImages​(boolean allowSearch)
      返回当前输入源可用的图像数,不包括缩略图。
      int getNumThumbnails​(int imageIndex)
      返回与给定图像关联的缩略图预览图像的数量。
      ImageReaderSpi getOriginatingProvider()
      返回在构造函数中传入的 ImageReaderSpi
      ImageTypeSpecifier getRawImageType​(int imageIndex)
      返回 ImageTypeSpecifier指示 SampleModelColorModel ,它们最接近地表示图像的“原始”内部格式。
      protected static Rectangle getSourceRegion​(ImageReadParam param, int srcWidth, int srcHeight)
      一种实用方法,读者可以使用该方法计算应读取的源图像区域,同时考虑所提供的 ImageReadParam中的任何源区域和子采样偏移设置。
      abstract IIOMetadata getStreamMetadata()
      返回一个 IIOMetadata表示与输入源作为一个整体(即,不与任何特定图像相关联)相关联的元数据对象,或者 null如果读取器不支持读取元数据,被设置为忽略元数据,或者,如果没有元数据可用。
      IIOMetadata getStreamMetadata​(String formatName, Set<String> nodeNames)
      返回 IIOMetadata对象,该对象表示与输入源整体相关联的元数据(即,不与任何特定图像相关联)。
      int getThumbnailHeight​(int imageIndex, int thumbnailIndex)
      返回由 thumbnailIndex索引的缩略图预览图像的高度,该图像与 ImageIndex索引的图像 ImageIndex
      int getThumbnailWidth​(int imageIndex, int thumbnailIndex)
      返回由 thumbnailIndex索引的缩略图预览图像的宽度,该图像与 ImageIndex索引的图像 ImageIndex
      int getTileGridXOffset​(int imageIndex)
      返回给定图像中tile(0,0)左上角的X坐标。
      int getTileGridYOffset​(int imageIndex)
      返回给定图像中tile(0,0)左上角的Y坐标。
      int getTileHeight​(int imageIndex)
      返回给定图像中图块的高度。
      int getTileWidth​(int imageIndex)
      返回给定图像中图块的宽度。
      abstract int getWidth​(int imageIndex)
      返回输入源中给定图像的宽度(以像素为单位)。
      boolean hasThumbnails​(int imageIndex)
      如果给定图像具有与之关联的缩略图预览图像,则返回 true
      boolean isIgnoringMetadata()
      如果通过将 true作为 ignoreMetadata参数传递给 setInput方法将当前输入源标记为允许忽略元数据,则返回 true
      boolean isImageTiled​(int imageIndex)
      如果图像被组织成 图块 ,则返回 true ,即,相等大小的非重叠矩形。
      boolean isRandomAccessEasy​(int imageIndex)
      如果给定图像的存储格式对随机访问像素没有固有障碍,则返回 true
      boolean isSeekForwardOnly()
      返回 true如果当前输入源已经被标记为只通过将寻求着 trueseekForwardOnly参数到 setInput方法。
      protected void processImageComplete()
      通过调用 imageComplete方法向所有已注册的 IIOReadProgressListener s广播读取图像的完成。
      protected void processImageProgress​(float percentageDone)
      通过调用 imageProgress方法将当前的图像完成百分比广播到所有已注册的 IIOReadProgressListener
      protected void processImageStarted​(int imageIndex)
      通过调用 imageStarted方法,将读取的图像的开始广播到所有已注册的 IIOReadProgressListener
      protected void processImageUpdate​(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
      通过调用 imageUpdate方法将一组样本的更新广播到所有已注册的 IIOReadUpdateListener s。
      protected void processPassComplete​(BufferedImage theImage)
      通过调用他们的 passComplete方法向所有已注册的 IIOReadUpdateListener广播渐进传递的结束。
      protected void processPassStarted​(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
      通过调用他们的 passStarted方法向所有已注册的 IIOReadUpdateListener s播放渐进传递的开头。
      protected void processReadAborted()
      通过调用 readAborted方法广播读取已中止到所有已注册的 IIOReadProgressListener s。
      protected void processSequenceComplete()
      通过调用 sequenceComplete方法向所有已注册的 IIOReadProgressListener广播完成一系列图像读取。
      protected void processSequenceStarted​(int minIndex)
      通过调用 sequenceStarted方法向所有已注册的 IIOReadProgressListener广播图像读取序列的开始。
      protected void processThumbnailComplete()
      通过调用 thumbnailComplete方法向所有已注册的 IIOReadProgressListener广播完成缩略图读取。
      protected void processThumbnailPassComplete​(BufferedImage theThumbnail)
      通过调用 thumbnailPassComplete方法将缩略图渐进传递的结尾广播到所有已注册的 IIOReadUpdateListener
      protected void processThumbnailPassStarted​(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
      通过调用 thumbnailPassStarted方法将缩略图渐进传递的开头广播到所有已注册的 IIOReadUpdateListener
      protected void processThumbnailProgress​(float percentageDone)
      通过调用 thumbnailProgress方法将当前缩略图完成百分比广播到所有已注册的 IIOReadProgressListener
      protected void processThumbnailStarted​(int imageIndex, int thumbnailIndex)
      通过调用 thumbnailStarted方法,将缩略图读取的开始广播到所有已注册的 IIOReadProgressListener
      protected void processThumbnailUpdate​(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
      通过调用 thumbnailUpdate方法将缩略图图像中的一组样本的更新广播到所有已注册的 IIOReadUpdateListener
      protected void processWarningOccurred​(String warning)
      通过调用 warningOccurred方法向所有已注册的 IIOReadWarningListener广播警告消息。
      protected void processWarningOccurred​(String baseName, String keyword)
      广播本地化警告消息给所有注册 IIOReadWarningListener通过调用它们的S warningOccurred法从拍摄字符串 ResourceBundle
      BufferedImage read​(int imageIndex)
      读取由 imageIndex索引的图像,并使用默认值 ImageReadParam将其作为完整的 BufferedImage返回。
      abstract BufferedImage read​(int imageIndex, ImageReadParam param)
      读取由 imageIndex索引的图像,并使用提供的 ImageReadParam将其作为完整的 BufferedImage返回。
      IIOImage readAll​(int imageIndex, ImageReadParam param)
      读取由索引的图像 imageIndex并返回一个 IIOImage包含图像,缩略图和相关联的图像元数据,使用所提供的 ImageReadParam
      Iterator<IIOImage> readAll​(Iterator<? extends ImageReadParam> params)
      返回 Iterator包含所有图像,缩略图和元数据,从 getMinIndex给出的索引开始,以 IIOImage对象的形式从输入源 IIOImage
      RenderedImage readAsRenderedImage​(int imageIndex, ImageReadParam param)
      返回 RenderedImage对象,其中包含由 imageIndex索引的图像的内容。
      boolean readerSupportsThumbnails()
      如果此阅读器理解的图像格式支持与其关联的缩略图预览图像,则返回 true
      Raster readRaster​(int imageIndex, ImageReadParam param)
      返回一个新的 Raster对象,其中包含图像流中的原始像素数据,未应用任何颜色转换。
      BufferedImage readThumbnail​(int imageIndex, int thumbnailIndex)
      返回由 thumbnailIndex索引的缩略图预览图像,该图像与 ImageIndex索引的图像相关联,为 BufferedImage
      BufferedImage readTile​(int imageIndex, int tileX, int tileY)
      读取 tileXtileY参数指示的 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
      • minIndex

        protected int minIndex
        读取的最小有效索引,最初为0.当 seekForwardOnlytrue ,各种方法可能会尝试访问与具有较低索引的图像关联的数据的 IndexOutOfBoundsException
        另请参见:
        seekForwardOnlysetInput(java.lang.Object, boolean, boolean)
      • availableLocales

        protected Locale[] availableLocales
        的阵列 Locale其可以被用于定位的警告消息,或S null如果不支持定位。
      • locale

        protected Locale locale
        目前 Locale用于定位,或 null如果没有设置。
      • warningListeners

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

        protected List<Locale> warningLocales
        ListLocale与每个当前注册的 IIOReadWarningListener相关联,默认情况下初始化为 null ,这与空 List同义。
      • progressListeners

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

        protected List<IIOReadUpdateListener> updateListeners
        A List当前已注册 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 必须在使用任何查询或读取方法之前设置输入源。 如果inputnull ,则将删除任何当前设置的输入源。 在任何情况下, minIndex的值将初始化为0。

        seekForwardOnly参数控制是否在getMinIndex每个图像(或缩略图或图像元数据)时增加getMinIndex返回的值。 如果seekForwardOnly为真,则对read(index)的调用将抛出IndexOutOfBoundsException如果index < this.minIndex ; 否则, minIndex的值将设置为index 如果seekForwardOnlyfalse ,则无论是否进行任何读取操作, minIndex的值minIndex将保持为0。

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

        子类应注意根据前一个流删除任何缓存的信息,例如标题信息或部分解码的图像数据。

        的一般使用Object比其他ImageInputStream旨在用于直接与捕获设备或图像协议交互的读取器。 法律类的集合由读者服务提供商的getInputTypes方法getInputTypes ; 大多数读者将返回仅包含ImageInputStream.class的单元素数组,表示它们仅接受ImageInputStream

        默认实现针对input返回的列表检查input参数,如果参数不是列表中某个类的实例, originatingProvider.getInputTypes()失败。 如果原始提供者设置为null ,输入被接受,只有当它是ImageInputStream

        参数
        input - 用于将来解码的 ImageInputStream或其他 Object
        seekForwardOnly - 如果是 true ,则只能从此输入源按升序读取图像和元数据。
        ignoreMetadata - 如果是 true ,则在读取期间可以忽略元数据。
        异常
        IllegalArgumentException - 如果 input不是原始服务提供商的 getInputTypes方法返回的某个类的实例,或者不是 ImageInputStream
        另请参见:
        ImageInputStreamgetInput()ImageReaderSpi.getInputTypes()
      • setInput

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

        seekForwardOnly参数控制是否在getMinIndex每个图像(或缩略图或图像元数据)时增加getMinIndex返回的值。 如果seekForwardOnly为真,则对read(index)的调用将抛出IndexOutOfBoundsException如果index < this.minIndex ; 否则, minIndex的值将设置为index 如果seekForwardOnlyfalse ,则无论是否进行任何读取操作, minIndex的值minIndex将保持为0。

        此方法相当于setInput(input, seekForwardOnly, false)

        参数
        input - ImageInputStream或其他 Object用于将来解码。
        seekForwardOnly - 如果是 true ,则只能从此输入源按升序读取图像和元数据。
        异常
        IllegalArgumentException - 如果 input不是始发服务提供商的 getInputTypes方法返回的某个类的实例,或者不是 ImageInputStream
        另请参见:
        getInput()
      • setInput

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

        此方法相当于setInput(input, false, false)

        参数
        input - ImageInputStream或其他 Object用于将来解码。
        异常
        IllegalArgumentException - 如果 input不是原始服务提供商的 getInputTypes方法返回的某个类的实例,或者不是 ImageInputStream
        另请参见:
        getInput()
      • isSeekForwardOnly

        public boolean isSeekForwardOnly()
        返回 true如果当前输入源已经被标记为只通过将寻求着 trueseekForwardOnly参数到 setInput方法。
        结果
        true如果输入源仅向前搜索。
        另请参见:
        setInput(java.lang.Object, boolean, boolean)
      • isIgnoringMetadata

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

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

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

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

        结果
        Locale的数组, Locale setLocalenull参数。
      • setLocale

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

        public Locale getLocale()
        返回当前设置 Locale ,或 null如果没有设置。
        结果
        目前 Locale ,或 null
        另请参见:
        setLocale(java.util.Locale)
      • getNumImages

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

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

        参数
        allowSearch - 如果是true ,即使需要搜索,也会返回真实的图像数。 如果是false ,则读者可以-1不执行搜索的情况下返回-1
        结果
        图像数量,如 int ,或 -1如果 allowSearchfalse ,则需要搜索。
        异常
        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

        保证所有图像都支持轻松随机访问或保证不支持简单随机访问的阅读器可以分别返回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
        返回Iterator其中包含可以解码给定图像的可能图像类型,形式为ImageTypeSpecifiers 将返回至少一种合法图像类型。

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

        参数
        imageIndex - 图像的索引是 retrieved
        结果
        Iterator包含至少一个 ImageTypeSpecifier表示用于解码当前给定图像的建议图像类型。
        异常
        IllegalStateException - 如果尚未设置输入源。
        IndexOutOfBoundsException - 如果提供的索引超出范围。
        IOException - 如果从输入源读取格式信息时发生错误。
        另请参见:
        ImageReadParam.setDestination(BufferedImage)IIOParam.setDestinationType(ImageTypeSpecifier)
      • getDefaultReadParam

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

        默认实现构造并返回不允许源缩放的新ImageReadParam对象( ,它返回new ImageReadParam()

        结果
        ImageReadParam对象,可用于使用一组默认设置控制解码过程。
      • getStreamMetadata

        public abstract IIOMetadata getStreamMetadata()
                                               throws IOException
        返回 IIOMetadata对象,表示与输入源整体关联的元数据(即,与任何特定图像 null );如果读取器不支持读取元数据,则设置为忽略元数据,或者如果没有元数据可用,则 null
        结果
        IIOMetadata对象,或 null
        异常
        IOException - 如果在读取期间发生错误。
      • getStreamMetadata

        public IIOMetadata getStreamMetadata​(String formatName,
                                             Set<String> nodeNames)
                                      throws IOException
        返回IIOMetadata对象,该对象表示与输入源整体相关联的元数据(即,不与任何特定图像相关联)。 如果不存在此类数据,则返回null

        生成的元数据对象仅负责以formatName指定的格式返回文档。 在返回的任何文档中,只需返回名称为nodeNames成员的节点。 以这种方式,基于实际需要什么信息,可以将读取器完成的元数据处理量保持为最小。

        如果formatName不是受支持的元数据格式的名称,则返回null

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

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

        参数
        formatName - 可用于从返回的 IIOMetadata对象检索文档的元数据格式名称。
        nodeNames - 包含检索到的文档中可能包含的节点名称的 Set
        结果
        IIOMetadata对象,或 null
        异常
        IllegalArgumentException - 如果 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可能返回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索引的图像,并使用默认值ImageReadParam将其作为完整的BufferedImage返回。 这是一种称为read(imageIndex, null)的便捷方法。

        返回的图像将根据该第一被格式化ImageTypeSpecifier从返回getImageTypes

        任何注册的IIOReadProgressListener对象将通过调用他们的imageStarted方法通知,然后在读取进行时调用他们的imageProgress方法。 最后将调用他们的imageComplete方法。 当像素被解码时,可以在读取期间的其他时间更新对象IIOReadUpdateListener 最后, IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。

        参数
        imageIndex - 要检索的图像的索引。
        结果
        图像的期望部分为 BufferedImage
        异常
        IllegalStateException - 如果尚未设置输入源。
        IndexOutOfBoundsException - 如果提供的索引超出范围。
        IOException - 如果在读取期间发生错误。
      • read

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

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

        任何注册的IIOReadProgressListener对象将通过调用他们的imageStarted方法通知,然后在读取进行时调用他们的imageProgress方法。 最后将调用他们的imageComplete方法。 当像素被解码时,在读取期间的其他时间可以更新IIOReadUpdateListener对象。 最后, IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。

        要读取的源带组和要写入的目标带通过在所提供的ImageReadParam上调用getSourceBandsgetDestinationBands来确定。 如果这些方法返回的数组长度不同,则源带集包含的索引大于最大可用源索引,或者目标带集包含的索引大于最大合法目标索引,则抛出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
        读取由索引的图像imageIndex并返回一个IIOImage包含图像,缩略图和相关联的图像元数据,使用所提供的ImageReadParam

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

        任何注册的IIOReadProgressListener对象将通过调用他们的imageStarted方法通知,然后在读取进行时调用他们的imageProgress方法。 最后将调用他们的imageComplete方法。 当读取像素时,可以在读取期间的其他时间更新对象IIOReadUpdateListener 最后, IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。

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

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

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

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

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

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

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

        任何注册的IIOReadProgressListener物品将通过拨打sequenceStarted方法通知一次。 然后,对于每个解码的图像,将调用imageStarted ,随后在读取进行时调用imageProgress ,最后imageComplete 在最后一个图像被解码后,将调用sequenceComplete方法。 当读取像素时,可以在读取期间的其他时间更新IIOReadUpdateListener对象。 最后, IIOReadWarningListener对象将收到解码期间发生的任何非致命警告的通知。

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

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

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

        参数
        params - 一个 Iterator包含 ImageReadParam对象。
        结果
        Iterator表示输入源的内容为 IIOImage
        异常
        IllegalStateException - 如果尚未设置输入源。
        IllegalArgumentException -如果任何非 null的元件 params不是 ImageReadParam
        IllegalArgumentException - 如果 param.getSourceBandsparam.getDestinationBands指定的源和目标带的 param.getSourceBands长度不同或包含超出范围的索引。
        IllegalArgumentException - 如果生成的图像的宽度或高度小于1。
        IOException - 如果在读取期间发生错误。
        另请参见:
        ImageReadParamIIOImage
      • 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指定的任意矩形区域。

        保证所有图像被平铺或保证不被平铺的读取器可以分别返回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
        返回给定图像中tile(0,0)左上角的X坐标。

        瓦片网格X偏移总是具有相同值(通常为0)的读取器可以返回该值而不访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。

        默认实现只返回0,这对于大多数格式的非平铺图像和平铺图像都是正确的。 支持使用非(0,0)偏移进行平铺的读者应该重写此方法。

        参数
        imageIndex - 要查询的图像的索引。
        结果
        图块网格的X偏移量。
        异常
        IllegalStateException - 如果需要输入源来确定返回值,但尚未设置任何输入源。
        IndexOutOfBoundsException - 如果必须访问图像以确定返回值,但提供的索引超出范围。
        IOException - 如果在读取期间发生错误。
      • getTileGridYOffset

        public int getTileGridYOffset​(int imageIndex)
                               throws IOException
        返回给定图像中tile(0,0)左上角的Y坐标。

        平铺网格Y偏移始终具有相同值(通常为0)的读取器可以返回该值而不访问任何图像数据。 在这种情况下,即使没有设置输入源或图像索引超出范围,也不必抛出异常。

        默认实现只返回0,这对于大多数格式的非平铺图像和平铺图像都是正确的。 支持使用非(0,0)偏移进行平铺的读者应该重写此方法。

        参数
        imageIndex - 要查询的图像的索引。
        结果
        平铺网格的Y偏移量。
        异常
        IllegalStateException - 如果需要输入源来确定返回值,但尚未设置任何输入源。
        IndexOutOfBoundsException - 如果必须访问图像以确定返回值,但提供的索引超出范围。
        IOException - 如果在读取期间发生错误。
      • readTile

        public BufferedImage readTile​(int imageIndex,
                                      int tileX,
                                      int tileY)
                               throws IOException
        读取tileXtileY参数指示的tileX ,将其返回为BufferedImage 如果参数超出范围,则抛出IllegalArgumentException 如果图像未平铺,则值0,0将返回整个图像; 任何其他值将导致IllegalArgumentException被抛出。

        此方法仅仅是一个方便相当于调用read(int, ImageReadParam)用read参数指定具有偏移量的源极区域tileX*getTileWidth(imageIndex)tileY*getTileHeight(imageIndex)和宽度和高度getTileWidth(imageIndex)getTileHeight(imageIndex) ; 和子采样因子为1,偏移为0.要对一个图块进行二次采样,请使用指定此区域和不同子采样参数的读取参数调用read

        如果tileXtileY为0,则默认实现返回整个图像,否则返回IllegalArgumentException

        参数
        imageIndex - 要检索的图像的索引。
        tileX - 要检索的 tileX的列索引(以0开头)。
        tileY - 要检索的 tileY的行索引(以0开头)。
        结果
        瓷砖为 BufferedImage
        异常
        IllegalStateException - 如果尚未设置输入源。
        IndexOutOfBoundsException - 如果 imageIndex超出界限。
        IllegalArgumentException - 如果tile索引超出范围。
        IOException - 如果在阅读期间发生错误。
      • 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.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将返回imageIndex

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

        参数
        imageIndex - 要查询的图像的索引。
        结果
        true如果给定图像有缩略图。
        异常
        IllegalStateException - 如果阅读器支持缩略图但尚未设置输入源。
        IndexOutOfBoundsException - 如果阅读器支持缩略图,但 imageIndex超出范围。
        IOException - 如果在读取期间发生错误。
      • getNumThumbnails

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

        默认实现返回0而不检查其参数。

        参数
        imageIndex - 要查询的图像的索引。
        结果
        与给定图像关联的缩略图数量。
        异常
        IllegalStateException - 如果阅读器支持缩略图但尚未设置输入源。
        IndexOutOfBoundsException - 如果阅读器支持缩略图,但 imageIndex超出范围。
        IOException - 如果在读取期间发生错误。
      • getThumbnailWidth

        public int getThumbnailWidth​(int imageIndex,
                                     int thumbnailIndex)
                              throws IOException
        返回由thumbnailIndex索引的缩略图预览图像的宽度,该图像与ImageIndex索引的图像ImageIndex

        如果读者不支持缩略图( readerSupportsThumbnails返回false ),则会抛出UnsupportedOperationException

        默认实现只返回readThumbnail(imageindex, thumbnailIndex).getWidth() 因此,子类应尽可能覆盖此方法,以避免强制读取缩略图。

        参数
        imageIndex - 要检索的图像的索引。
        thumbnailIndex - 要检索的缩略图的索引。
        结果
        所需缩略图的宽度为 int
        异常
        UnsupportedOperationException - 如果不支持缩略图。
        IllegalStateException - 如果尚未设置输入源。
        IndexOutOfBoundsException - 如果提供的索引中的任何一个超出范围。
        IOException - 如果在阅读期间发生错误。
      • getThumbnailHeight

        public int getThumbnailHeight​(int imageIndex,
                                      int thumbnailIndex)
                               throws IOException
        返回由thumbnailIndex索引的缩略图预览图像的高度,该图像与ImageIndex索引的图像ImageIndex

        如果读者不支持缩略图( readerSupportsThumbnails返回false ),则会抛出UnsupportedOperationException

        默认实现只返回readThumbnail(imageindex, thumbnailIndex).getHeight() 因此,子类应尽可能覆盖此方法,以避免强制读取缩略图。

        参数
        imageIndex - 要检索的图像的索引。
        thumbnailIndex - 要检索的缩略图的索引。
        结果
        所需缩略图的高度为 int
        异常
        UnsupportedOperationException - 如果不支持缩略图。
        IllegalStateException - 如果尚未设置输入源。
        IndexOutOfBoundsException - 如果提供的索引中的任何一个超出范围。
        IOException - 如果在阅读期间发生错误。
      • readThumbnail

        public BufferedImage readThumbnail​(int imageIndex,
                                           int thumbnailIndex)
                                    throws IOException
        返回由thumbnailIndex索引的缩略图预览图像,与ImageIndex索引的图像相关联,为BufferedImage

        任何注册IIOReadProgressListener对象将通过调用它们的通知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如果当前的读操作应该中止。
        另请参见:
        abort()clearAbortRequest()
      • clearAbortRequest

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

        public void addIIOReadWarningListener​(IIOReadWarningListener listener)
        IIOReadWarningListener添加到已注册的警告侦听器列表中。 如果listenernull ,则不会抛出任何异常,也不会执行任何操作。 如果可能,发送到给定侦听器的消息将被本地化,以匹配当前的Locale 如果未设置Locale ,则警告消息可能会在读者认为合适时进行本地化。
        参数
        listener - 待注册 IIOReadWarningListener
        另请参见:
        removeIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)
      • removeIIOReadWarningListener

        public void removeIIOReadWarningListener​(IIOReadWarningListener listener)
        从已注册的错误侦听器列表中删除IIOReadWarningListener 如果以前没有注册过监听器,或者如果listenernull ,则不会抛出异常并且不会采取任何操作。
        参数
        listener - 要取消注册的IIOReadWarningListener。
        另请参见:
        addIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)
      • removeAllIIOReadWarningListeners

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

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

      • removeAllIIOReadProgressListeners

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

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

      • addIIOReadUpdateListener

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

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

        例如,在渐进式JPEG解码中,每个通道包含对一组系数的更新,如果存在侦听器,则必须将其转换为像素值并且针对每个通道转换为RGB颜色空间。 如果不存在侦听器,则可以简单地累积系数并且最终结果被转换并且仅颜色转换一次。

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

        参数
        listener - 要注册的IIOReadUpdateListener。
        另请参见:
        removeIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)
      • removeIIOReadUpdateListener

        public void removeIIOReadUpdateListener​(IIOReadUpdateListener listener)
        从已注册的更新侦听器列表中删除IIOReadUpdateListener 如果先前没有注册过监听器,或者listenernull ,则不会抛出异常并且不会采取任何操作。
        参数
        listener - 要取消注册的IIOReadUpdateListener。
        另请参见:
        addIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)
      • removeAllIIOReadUpdateListeners

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

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

      • processSequenceStarted

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

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

        protected void processImageStarted​(int imageIndex)
        通过调用imageStarted方法,将读取的图像的开始广播到所有已注册的IIOReadProgressListener 子类可以使用此方法作为方便。
        参数
        imageIndex - 即将读取的图像的索引。
      • processImageProgress

        protected void processImageProgress​(float percentageDone)
        通过调用imageProgress方法将当前的图像完成百分比广播到所有已注册的IIOReadProgressListener 子类可以使用此方法作为方便。
        参数
        percentageDone - 当前完成比例,为 float
      • processImageComplete

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

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

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

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

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

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

        protected void processImageUpdate​(BufferedImage theImage,
                                          int minX,
                                          int minY,
                                          int width,
                                          int height,
                                          int periodX,
                                          int periodY,
                                          int[] bands)
        通过调用imageUpdate方法将一组样本的更新广播到所有已注册的IIOReadUpdateListener 子类可以使用此方法作为方便。
        参数
        theImage - 正在更新的 BufferedImage
        minX - 传递中包含的左上角像素的X坐标。
        minY - 传递中包含的左上角像素的X坐标。
        width - 要更新的区域的总宽度,包括 periodX > 1跳过的像素。
        height - 要更新的区域的总高度,包括 periodY > 1跳过的像素。
        periodX - 像素之间的水平间隔。
        periodY - 像素之间的垂直间隔。
        bands -的阵列 int以及指示该组中的目的地的受影响的频带。
      • processPassComplete

        protected void processPassComplete​(BufferedImage theImage)
        通过调用他们的passComplete方法向所有已注册的IIOReadUpdateListener广播渐进传递的结束。 子类可以使用此方法作为方便。
        参数
        theImage - 正在更新的 BufferedImage
      • processThumbnailPassStarted

        protected void processThumbnailPassStarted​(BufferedImage theThumbnail,
                                                   int pass,
                                                   int minPass,
                                                   int maxPass,
                                                   int minX,
                                                   int minY,
                                                   int periodX,
                                                   int periodY,
                                                   int[] bands)
        通过调用thumbnailPassStarted方法将缩略图渐进传递的开头广播到所有已注册的IIOReadUpdateListener 子类可以使用此方法作为方便。
        参数
        theThumbnail - 正在更新的 BufferedImage缩略图。
        pass - 当前传递的索引,从0开始。
        minPass - 将被解码的第一个传递的索引。
        maxPass - 将被解码的最后一个传递的索引。
        minX - 传递中包含的左上角像素的X坐标。
        minY - 传递中包含的左上角像素的X坐标。
        periodX - 像素之间的水平间隔。
        periodY - 像素之间的垂直间距。
        bands -的阵列 int以及指示该组中的目的地的受影响的频带。
      • processThumbnailUpdate

        protected void processThumbnailUpdate​(BufferedImage theThumbnail,
                                              int minX,
                                              int minY,
                                              int width,
                                              int height,
                                              int periodX,
                                              int periodY,
                                              int[] bands)
        通过调用thumbnailUpdate方法将缩略图图像中的一组样本的更新广播到所有已注册的IIOReadUpdateListener 子类可以使用此方法作为方便。
        参数
        theThumbnail - 正在更新的 BufferedImage缩略图。
        minX - 传递中包含的左上角像素的X坐标。
        minY - 传递中包含的左上角像素的X坐标。
        width - 要更新的区域的总宽度,包括 periodX > 1跳过的像素。
        height - 要更新的区域的总高度,包括 periodY > 1跳过的像素。
        periodX - 像素之间的水平间隔。
        periodY - 像素之间的垂直间隔。
        bands -的阵列 int以及指示该组中的目的地的受影响的频带。
      • processThumbnailPassComplete

        protected void processThumbnailPassComplete​(BufferedImage theThumbnail)
        通过调用thumbnailPassComplete方法将缩略图渐进传递的结尾广播到所有已注册的IIOReadUpdateListener 子类可以使用此方法作为方便。
        参数
        theThumbnail - 正在更新的 BufferedImage缩略图。
      • processWarningOccurred

        protected void processWarningOccurred​(String warning)
        通过调用warningOccurred方法向所有已注册的IIOReadWarningListener广播警告消息。 子类可以使用此方法作为方便。
        参数
        warning - 要发送的警告消息。
        异常
        IllegalArgumentException - 如果 warningnull
      • processWarningOccurred

        protected void processWarningOccurred​(String baseName,
                                              String keyword)
        广播本地化警告消息给所有注册IIOReadWarningListener通过调用它们的S warningOccurred法从拍摄字符串ResourceBundle 子类可以使用此方法作为方便。
        参数
        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中的任何源区域和子采样偏移设置。 考虑实际的子采样因子,目的地大小和目的地偏移,因此必须进一步削减。 computeRegions方法执行所有必要的裁剪。
        参数
        param - 正在使用的 ImageReadParam ,或者 null
        srcWidth - 源图像的宽度。
        srcHeight - 源图像的高度。
        结果
        源区域为 Rectangle
      • computeRegions

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

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

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

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

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

        参数
        param - ImageReadParam ,或 null
        srcWidth - 源图像的宽度。
        srcHeight - 源图像的高度。
        image -一个 BufferedImage将成为目标图像,或 null
        srcRegion - Rectangle将填充感兴趣的源区域。
        destRegion - 将填充目标区域的 Rectangle
        异常
        IllegalArgumentException - 如果 srcRegionnull
        IllegalArgumentException - 如果 dstRegionnull
        IllegalArgumentException - 如果生成的源或目标区域为空。
      • checkReadParamBandSettings

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

        该方法检索的源和目标频带设定从使用PARAM阵列getSourceBandsgetDestinationBands方法(或认为它们是null如果paramnull )。 如果源波段设置阵列是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 - IteratorImageTypeSpecifier s表示合法的图像类型,默认为第一个。
        width - 正在解码的图像或图块的真实宽度。
        height - 正在解码的图像或图块的真实宽度。
        结果
        应该写入解码像素数据的 BufferedImage
        异常
        IIOException -如果 ImageTypeSpecifier通过指定 param不会匹配任何法律措施的 imageTypes
        IllegalArgumentException - 如果 imageTypesnull或为空,或者 ImageTypeSpecifier检索到类型不是 ImageTypeSpecifier的对象。
        IllegalArgumentException - 如果生成的图像的宽度或高度小于1。
        IllegalArgumentException - 如果 widthheight的产品大于 Integer.MAX_VALUE