Module  java.desktop
软件包  javax.imageio

Class ImageReader



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

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

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

    另请参见:
    ImageWriterIIORegistryImageReaderSpi
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected Locale[] availableLocales
      可用于本地化警告消息的 Locale的数组,如果不支持本地化, null
      protected boolean ignoreMetadata
      true如果当前输入源已被标记为允许元数据被 setInput忽略。
      protected Object input
      所述 ImageInputStream或其它 Object通过 setInput和由检索 getInput
      protected Locale locale
      目前 Locale用于定位,或 null ;如果没有设置。
      protected int minIndex
      读取的最小有效索引,最初为0。
      protected ImageReaderSpi originatingProvider
      ImageReaderSpi认为这个实例化对象,或者 null如果其身份未知或不存在。
      protected List<IIOReadProgressListener> progressListeners
      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同义词。
    • 构造方法摘要

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

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

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

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

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

        默认实现对input返回的列表检查input参数,如果参数不是列表中的一个类的实例, originatingProvider.getInputTypes()失败。 如果始发提供商设置为null ,则只有在ImageInputStream才能接受输入。

        参数
        input - ImageInputStream或其他 Object用于将来的解码。
        seekForwardOnly - 如果是 true ,图像和元数据只能从此输入源的升序读取。
        ignoreMetadata - 如果是 true ,读取期间可能会忽略元数据。
        异常
        IllegalArgumentException - 如果 input不是始发服务提供商的 getInputTypes方法返回的其中一个类的实例,或者不是 ImageInputStream
        另请参见:
        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将保持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如果当前输入源已经被标记为允许元数据通过传递被忽略 trueignoreMetadata参数传递给 setInput方法。
        结果
        true如果元数据可能被忽略。
        另请参见:
        setInput(java.lang.Object, boolean, boolean)
      • getMinIndex

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

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

        如果availableLocales实例变量为非null ,默认实现将返回克隆,否则返回null

        结果
        的阵列 Locale可用于作为参数为s setLocale ,或 null
      • 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而不执行搜索。
        结果
        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

        所有图像保证支持简单的随机访问或保证不支持简单随机访问的false分别返回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)ImageReadParam.setDestinationType(ImageTypeSpecifier)
      • getDefaultReadParam

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

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

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

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

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

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

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

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

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

        参数
        formatName - 可用于从返回的 IIOMetadata对象检索文档的元数据格式名称。
        nodeNames - a 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 - a Set包含可能包含在检索到的文档中的节点的名称。
        结果
        一个 IIOMetadata对象,或 null
        异常
        IllegalStateException - 如果输入源尚未设置。
        IndexOutOfBoundsException - 如果提供的索引超出范围。
        IllegalArgumentException - 如果 formatNamenull
        IllegalArgumentException - 如果 nodeNamesnull
        IOException - 读取时是否发生错误。
      • read

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

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

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

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

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

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

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

        要读取的源频带组和要写入的目标频带由所提供的ImageReadParam上的getSourceBandsgetDestinationBands ImageReadParam 如果由这些方法返回的数组的长度不同,则源频带集包含较大的可用源索引,或者目标频带集合包含大于最大合法目标索引的索引的索引,抛出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 ImageReadParam 如果这些方法返回的数组的长度不同,则源频带集包含一个较大的索引,即最大的可用源索引,或者目标频段集合包含大于最大合法目标索引的索引,抛出一个IllegalArgumentException

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

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

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

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

        如果paramsnull ,则所有图像都将使用默认阅读参数。

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

        任何已注册的IIOReadProgressListener对象将通过其sequenceStarted方法一次通知。 然后,对于每个图像解码,就会有一个电话imageStarted ,然后调用imageProgress作为读取进展,最后到imageComplete sequenceComplete方法将在最后一个图像解码后调用。 IIOReadUpdateListener对象可以在其他时间读出期间像素被解码被更新。 最后, IIOReadWarningListener对象将收到在解码期间发生的任何非致命警告的通知。

        要读取的源频带组和要写入的目标频带由所提供的ImageReadParamgetDestinationBands调用getSourceBandsgetDestinationBands确定。 如果这些方法返回的数组的长度不同,则源频带集包含一个较大的索引,即最大的可用源索引,或者目标频带组包含大于最大合法目的地索引的索引,抛出一个IllegalArgumentException

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

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

        参数
        params - 一个 Iterator包含 ImageReadParam对象。
        结果
        一个 Iterator表示输入源的内容为 IIOImage s。
        异常
        IllegalStateException - 如果输入源尚未设置。
        IllegalArgumentException -如果任何非 null的元件 params不是 ImageReadParam
        IllegalArgumentException - 如果由 param.getSourceBandsparam.getDestinationBands指定的源和目标频带的长度不同或包括超出界限的索引。
        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
        返回给定图像中瓦片(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参数指示的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 - 要检索的图块的列索引(以0开头)。
        tileY - 要检索的图块的行索引(以0开头)。
        结果
        瓷砖为 BufferedImage
        异常
        IllegalStateException - 如果输入源尚未设置。
        IndexOutOfBoundsException - 如果 imageIndex是超出范围。
        IllegalArgumentException - 如果图块索引超出界限。
        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

        如果此方法返回false ,则hasThumbnailsgetNumThumbnails将分别返回false0 ,而readThumbnail将抛出UnsupportedOperationException ,无论其论点如何。

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

        结果
        true如果支持缩略图。
      • hasThumbnails

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

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

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

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

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

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

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

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

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

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

        public int getThumbnailHeight​(int imageIndex,
                                      int thumbnailIndex)
                               throws IOException
        返回索引的缩略图预览图像的高度thumbnailIndex ,通过索引的图像关联ImageIndex

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

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

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

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

        任何注册IIOReadProgressListener对象将通过调用它们的通知thumbnailStartedthumbnailProgress ,并thumbnailComplete方法。

        如果读者不支持缩略图,( readerSupportsThumbnails返回false ),无论输入源是设置还是索引处于边界,将抛出UnsupportedOperationException

        默认实现会抛出一个UnsupportedOperationException

        参数
        imageIndex - 要检索的图像的索引。
        thumbnailIndex - 要检索的缩略图的索引。
        结果
        所需的缩略图为 BufferedImage
        异常
        UnsupportedOperationException - 如果不支持缩略图。
        IllegalStateException - 如果输入源尚未设置。
        IndexOutOfBoundsException - 如果任何一个提供的索引超出范围。
        IOException - 读取时是否发生错误。
      • abort

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

        读者应在每次读取操作开始时调用clearAbortRequest ,并在读取期间定期轮询值abortRequested

      • abortRequested

        protected boolean abortRequested​()
        返回 true是否已经做出了中止当前读取操作的请求,因为读者被实例化或 clearAbortRequest被调用。
        结果
        true如果当前的读取操作应该被中止。
        另请参见:
        abort()clearAbortRequest()
      • clearAbortRequest

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

        public void addIIOReadWarningListener​(IIOReadWarningListener listener)
        IIOReadWarningListener添加到已注册警告侦听器的列表中。 如果listenernull ,则不会抛出异常,不会执行任何操作。 发送给给定侦听器的消息将被本地化,如果可能,匹配当前的Locale 如果没有设置Locale ,警告消息可能会按照读者认为合适的方式进行本地化。
        参数
        listener - 要注册的 IIOReadWarningListener
        另请参见:
        removeIIOReadWarningListener(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)
      • removeAllIIOReadUpdateListeners

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

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

      • processSequenceStarted

        protected void processSequenceStarted​(int minIndex)
        通过调用他们的sequenceStarted方法,将所有注册的IIOReadProgressListener的图像读取序列的开始广播。 子类可以方便地使用这种方法。
        参数
        minIndex - 正在读取的最低索引。
      • processSequenceComplete

        protected void processSequenceComplete​()
        通过调用它们的sequenceComplete方法,将所有注册的IIOReadProgressListener的图像读取序列的完成广播。 子类可以方便地使用这种方法。
      • processImageStarted

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

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

        protected void processImageComplete​()
        通过调用他们的imageComplete方法将所读取的图像的完成广播到所有注册的IIOReadProgressListener 子类可以方便地使用这种方法。
      • processThumbnailStarted

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

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

        protected void processThumbnailComplete​()
        通过调用thumbnailComplete方法将所有注册的IIOReadProgressListener的缩略图读取完成。 子类可以方便地使用这种方法。
      • processReadAborted

        protected void processReadAborted​()
        通过调用它们的readAborted方法广播已读取已被中止到所有注册的IIOReadProgressListener 子类可以方便地使用这种方法。
      • processPassStarted

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

        protected void processImageUpdate​(BufferedImage theImage,
                                          int minX,
                                          int minY,
                                          int width,
                                          int height,
                                          int periodX,
                                          int periodY,
                                          int[] bands)
        通过调用其imageUpdate方法,将一组样本的更新广播到所有注册的IIOReadUpdateListener 子类可以方便地使用这种方法。
        参数
        theImage - BufferedImage正在更新。
        minX - 包含在通过中的左上角像素的X坐标。
        minY - 通过中包含的左上角像素的X坐标。
        width - 要更新的区域的总宽度,包括要跳过的像素,如果是 periodX > 1
        height - 正在更新的区域的总高度,包括如果 periodY > 1被跳过的像素。
        periodX - 像素之间的水平间隔。
        periodY - 像素之间的垂直分隔。
        bands - int s的数组,表示目的地受影响的一组。
      • processPassComplete

        protected void processPassComplete​(BufferedImage theImage)
        通过调用他们的passComplete方法,将所有注册的IIOReadUpdateListener的广播结束广播。 子类可以方便地使用这种方法。
        参数
        theImage - BufferedImage正在更新。
      • processThumbnailPassStarted

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

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

        protected void processThumbnailPassComplete​(BufferedImage theThumbnail)
        通过调用他们的thumbnailPassComplete方法,将所有注册的IIOReadUpdateListener s的缩略图IIOReadUpdateListener通过thumbnailPassComplete 子类可以方便地使用这种方法。
        参数
        theThumbnail - 正在更新的 BufferedImage缩略图。
      • processWarningOccurred

        protected void processWarningOccurred​(String warning)
        通过拨打其warningOccurred方法向所有注册的IIOReadWarningListener发送警告信息。 子类可以方便地使用这种方法。
        参数
        warning - 要发送的警告消息。
        异常
        IllegalArgumentException - 如果 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中的任何源区域和子采样偏移设置。 考虑实际的子采样因子,目的地大小和目的地偏移,因此必须进行进一步的剪切。 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 - a ImageReadParamnull
        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参数的width height

        参数
        param -一个 ImageReadParam被用于获取目标图像或图像类型,或 null
        imageTypes - 一个 IteratorImageTypeSpecifier s,指示合法的图像类型,默认为第一个。
        width - 要解码的图像或图块的真实宽度。
        height - 正在解码的图像或瓦片的真实宽度。
        结果
        应写入解码像素数据的 BufferedImage
        异常
        IIOException -如果 ImageTypeSpecifier由指定 param不会匹配任何法律措施的 imageTypes
        IllegalArgumentException - 如果 imageTypesnull或为空,或者从其中检索不是类型为 ImageTypeSpecifier的对象。
        IllegalArgumentException - 如果生成的图像的宽度或高度小于1。
        IllegalArgumentException - 如果 widthheight的产品大于 Integer.MAX_VALUE