模块  java.desktop
软件包  javax.imageio.spi

Class ImageReaderSpi

  • 实现的所有接口
    RegisterableService

    public abstract class ImageReaderSpiextends ImageReaderWriterSpi
    ImageReader的服务提供者接口(SPI)。 有关服务提供者类的更多信息,请参阅IIORegistry类的类注释。

    每个ImageReaderSpi提供了与其关联的ImageReader类的几种类型的信息。

    谁定义的SPI类和类的简要描述的供应商的名称都可以通过现有getVendorNamegetDescriptiongetVersion方法。 这些方法可以国际化以提供特定于语言环境的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的人类可读信息。

    可以通过getFileSuffixesgetMIMETypes方法获得与服务相关联的格式名称,文件后缀和MIME类型的getFormatNames 这些方法可用于识别候选ImageReader用于基于手动格式选择,文件命名或MIME关联(例如,通过HTTP或作为电子邮件附件访问文件时)对特定文件或流进行解码。

    canDecodeInput方法提供了一种更可靠的方法来确定哪些ImageReader可能能够解析特定数据流。 此方法允许服务提供者检查实际的流内容。

    最后,可以通过调用createReaderInstance方法获得与此服务提供者关联的ImageReader类的实例。 任何重量级初始化(例如加载本机库或创建大型表)都应该至少延迟到第一次调用此方法为止。

    另请参见:
    IIORegistryImageReader
    • 字段详细信息

      • STANDARD_INPUT_TYPE

        @Deprecatedpublic static final <?>[] STANDARD_INPUT_TYPE
        Deprecated.
        Instead of using this field, directly create the equivalent array { ImageInputStream.class }.
        最初包含 ImageInputStream.class单元素数组,从 getInputTypes返回。
      • inputTypes

        protected <?>[] inputTypes
        要从 getInputTypes返回的 对象的数组,最初为 null
      • writerSpiNames

        protected String[] writerSpiNames
        getImageWriterSpiNames返回的字符串数组,最初为 null
    • 构造方法详细信息

      • ImageReaderSpi

        protected ImageReaderSpi()
        构造一个空白ImageReaderSpi 由子类来初始化实例变量和/或覆盖方法实现,以便提供所有方法的工作版本。
      • ImageReaderSpi

        public ImageReaderSpi​(String vendorName,                      String version,                      String[] names,                      String[] suffixes,                      String[] MIMETypes,                      String readerClassName,                      <?>[] inputTypes,                      String[] writerSpiNames,                      boolean supportsStandardStreamMetadataFormat,                      String nativeStreamMetadataFormatName,                      String nativeStreamMetadataFormatClassName,                      String[] extraStreamMetadataFormatNames,                      String[] extraStreamMetadataFormatClassNames,                      boolean supportsStandardImageMetadataFormat,                      String nativeImageMetadataFormatName,                      String nativeImageMetadataFormatClassName,                      String[] extraImageMetadataFormatNames,                      String[] extraImageMetadataFormatClassNames)
        构造具有给定值集的 ImageReaderSpi
        参数
        vendorName - 供应商名称,作为非 null String
        version - 版本标识符,非 null String
        names - 非null数组, String指示格式名称的String 必须至少有一个条目。
        suffixes -的阵列String指示常用文件后缀。 如果未定义后缀,则应提供null 长度为0的数组将标准化为null
        MIMETypes -的阵列String指示格式的MIME类型。 如果未定义MIME类型,则应提供null 长度为0的数组将标准化为null
        readerClassName - 关联的 ImageReader类的完全限定名称,作为非 null String
        inputTypes - 长度至少为1的 对象的非 null数组,指示合法输入类型。
        writerSpiNames - 一个数组String命名所有关联的类的ImageWriternull 长度为0的数组规范化为null
        supportsStandardStreamMetadataFormat - boolean ,指示流元数据对象是否可以使用标准元数据格式描述的树。
        nativeStreamMetadataFormatName - String null返回的 StringgetNativeStreamMetadataFormatName
        nativeStreamMetadataFormatClassName - Stringnull ,用于实例化从 getNativeStreamMetadataFormat返回的元数据格式对象。
        extraStreamMetadataFormatNames -的阵列String S或null从返回, getExtraStreamMetadataFormatNames 长度为0的数组规范化为null
        extraStreamMetadataFormatClassNames - 一个String s或null的数组,用于实例化要从getStreamMetadataFormat返回的元数据格式对象。 长度为0的数组规范化为null
        supportsStandardImageMetadataFormat - boolean ,指示图像元数据对象是否可以使用标准元数据格式描述的树。
        nativeImageMetadataFormatName -一个 String ,或 null ,从返回 getNativeImageMetadataFormatName
        nativeImageMetadataFormatClassName - Stringnull ,用于实例化要从 getNativeImageMetadataFormat返回的元数据格式对象。
        extraImageMetadataFormatNames -的阵列String从返回小号getExtraImageMetadataFormatNames 长度为0的数组规范化为null
        extraImageMetadataFormatClassNames - 一个Stringnull的数组,用于实例化要从getImageMetadataFormat返回的元数据格式对象。 长度为0的数组规范化为null
        异常
        IllegalArgumentException - 如果 vendorNamenull
        IllegalArgumentException - 如果 versionnull
        IllegalArgumentException - 如果 namesnull或者长度为0。
        IllegalArgumentException - 如果 readerClassNamenull
        IllegalArgumentException - 如果 inputTypesnull或者长度为0。
    • 方法详细信息

      • getInputTypes

        public <?>[] getInputTypes()
        返回一个对象的数组,指示可以将哪些类型的对象用作读者的setInput方法的参数。

        对于只接受来自ImageInputStream输入的大多数读者,应返回包含ImageInputStream.class的单元素数组。

        结果
        null数组,长度至少为1的 对象。
      • canDecodeInput

        public abstract boolean canDecodeInput​(Object source)                                throws IOException
        如果提供的源对象看起来具有此阅读器支持的格式,则返回true 从此方法返回true并不能保证读取成功,只是基于对流内容的简要检查,似乎有合理的成功机会。 如果源是ImageInputStream ,则实现通常会检查流的前几个字节以查找与该格式相关联的“幻数”。 一旦实际读数开始,读者仍可在解码完成之前的任何时间指示失败。

        重要的是不要扰乱对象的状态,以便其他ImageReaderSpi可以正确地确定它们是否能够解码对象。 特别是,如果该源为ImageInputStream ,一个mark / reset对应该用来保存流位置。

        可能会尝试读取几乎任何流的“raw”等格式应该返回false ,以避免被调用而不是更接近匹配。

        如果source不是通过返回的一个类的实例getInputTypes ,该方法应该简单地返回false

        参数
        source - 要解码的对象(通常为 ImageInputStream )。
        结果
        true是否可能解码此流。
        异常
        IllegalArgumentException - 如果 sourcenull
        IOException - 如果在读取流时发生I / O错误。
      • createReaderInstance

        public ImageReader createReaderInstance()                                 throws IOException
        返回与此服务提供者关联的ImageReader实现的实例。 返回的对象最初将处于初始状态,就像调用了它的reset方法一样。

        默认实现只返回createReaderInstance(null)

        结果
        一个 ImageReader实例。
        异常
        IOException - 如果在加载或初始化读取器类期间或在读取器对象的实例化或初始化期间发生错误。
      • createReaderInstance

        public abstract ImageReader createReaderInstance​(Object extension)                                          throws IOException
        返回与此服务提供者关联的ImageReader实现的实例。 返回的对象最初将处于初始状态,就像调用了它的reset方法一样。

        可以在构建时向插件提供Object 对象的性质完全是插件特定的。

        通常,插件将使用诸如return new MyImageReader(this)代码实现此方法。

        参数
        extension - 特定于插件的扩展对象,可能是 null
        结果
        一个 ImageReader实例。
        异常
        IOException - 如果尝试实例化阅读器失败。
        IllegalArgumentException - 如果 ImageReader的构造函数抛出 IllegalArgumentException以指示扩展对象不适合。
      • isOwnReader

        public boolean isOwnReader​(ImageReader reader)
        如果传入的ImageReader对象是与此服务提供者关联的ImageReader的实例,则返回true

        默认实现将reader参数的完全限定类名与传递给构造函数的类名进行比较。 如果需要更复杂的检查,则可以覆盖此方法。

        参数
        reader - ImageReader实例。
        结果
        true如果识别出 reader
        异常
        IllegalArgumentException - 如果 readernull
      • getImageWriterSpiNames

        public String[] getImageWriterSpiNames()
        返回包含所有ImageWriterSpi类的完全限定名称的String数组, String类可以理解与此服务提供者关联的ImageReader使用的内部元数据表示形式,如果没有指定nullImageWriter 如果返回非null值,则其长度必须为非零。

        数组中的第一项必须是“首选” ImageWriter的服务提供程序的名称,因为它将用于实例化ImageWriter返回的ImageIO.getImageWriter(ImageReader)

        该机制可用于获得ImageWriters ,其将理解由ImageReader生成的非像素元数据(参见IIOTreeInfo )的内部结构。 通过从ImageReader获取此数据并将其传递给使用此方法获得的ImageWriters之一,客户端程序可以读取图像,以某种方式修改它,并在保留所有元数据的同时将其写回,而不必了解有关元数据内部结构的任何信息,甚至是图像格式。

        结果
        长度至少为1的 String s数组,包含 ImageWriterSpinull名称。
        另请参见:
        ImageIO.getImageWriter(ImageReader)