- java.lang.Object
-  
      - javax.imageio.spi.IIOServiceProvider
-  
        - javax.imageio.spi.ImageReaderWriterSpi
-  
          - javax.imageio.spi.ImageReaderSpi
 
 
 
-  
       - All Implemented Interfaces:
-  
         RegisterableService
 
 
 public abstract class ImageReaderSpi extends ImageReaderWriterSpi 服务提供商接口(SPI),用于ImageReaders。 有关服务提供程序类的更多信息,请参阅IIORegistry类的类注释。每个 ImageReaderSpi提供了与它相关联的ImageReader类的几种类型的信息。谁定义的SPI类和类的简要描述的供应商的名称是通过提供 getVendorName,getDescription,并getVersion方法。 这些方法可以被国际化以提供特定于区域的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的,可读的信息。格式名称,文件后缀,以及与该服务相关联MIME类型的列表可通过的方式获得 getFormatNames,getFileSuffixes,和getMIMETypes方法。 这些方法可以用于识别基于手动格式选择,文件命名或MIME关联来解码特定文件或流的候选者ImageReaders(例如,当通过HTTP访问文件或作为电子邮件附件时)。通过 canDecodeInput方法提供了一种更可靠的方法来确定哪些ImageReader可能能够解析特定的数据流。 此方法允许服务提供商检查实际的流内容。最后,可以通过调用 createReaderInstance方法获得与此服务提供商相关联的ImageReader类的实例。 任何重量级的初始化(如加载本机库或创建大型表)至少应该延迟至首次调用此方法为止。- 另请参见:
-  
         IIORegistry,ImageReader
 
-  
        
       -  
             Field SummaryFields Modifier and Type Field 描述 protected Class<?>[]inputTypes一组Class对象从getInputTypes返回,最初为null。static Class<?>[]STANDARD_INPUT_TYPE已过时。而不是使用这个字段,直接创建等效的数组{ ImageInputStream.class }。protected String[]writerSpiNames要从getImageWriterSpiNames返回的字符串数组,最初为null。-  
               Fields inherited from class javax.imageio.spi.IIOServiceProvidervendorName, version
 -  
               Fields inherited from class javax.imageio.spi.ImageReaderWriterSpiextraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
 
-  
               
 -  
             构造方法摘要构造方法 Modifier Constructor 描述 protectedImageReaderSpi()构造一个空白ImageReaderSpi。ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class<?>[] inputTypes, String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)构造一个给定值的一个ImageReaderSpi。
 -  
             方法摘要所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract booleancanDecodeInput(Object source)如果提供的源对象看起来是由该读者支持的格式,则返回true。ImageReadercreateReaderInstance()返回与此服务提供商关联的ImageReader实现的实例。abstract ImageReadercreateReaderInstance(Object extension)返回与此服务提供商关联的ImageReader实现的实例。String[]getImageWriterSpiNames()返回的数组String包含所有的完全合格的名称小号ImageWriterSpi类,可以理解由所使用的内部元数据表示ImageReader与此服务提供商相关联,或null如果没有这样的ImageWriter指定秒。Class<?>[]getInputTypes()返回一个Class对象的数组,指示可以将什么类型的对象用作读者setInput方法的参数。booleanisOwnReader(ImageReader reader)如果传递的ImageReader对象是与此服务提供商关联的ImageReader的实例,则返回true。-  
               Methods inherited from class javax.imageio.spi.IIOServiceProvidergetDescription, getVendorName, getVersion, onDeregistration, onRegistration
 -  
               Methods inherited from class javax.imageio.spi.ImageReaderWriterSpigetExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
 
-  
               
 
-  
             
-  
        
       -  
             字段详细信息-  STANDARD_INPUT_TYPE@Deprecated public static final Class<?>[] STANDARD_INPUT_TYPE 已过时。 而不是使用这个字段,直接创建等效的数组{ ImageInputStream.class }。一个单元素数组,最初包含ImageInputStream.class,从getInputTypes返回。
 -  inputTypesprotected Class<?>[] inputTypes 一组Class对象从getInputTypes返回,最初为null。
 -  writerSpiNamesprotected String[] writerSpiNames 要从getImageWriterSpiNames返回的字符串数组,最初为null。
 
-  
 -  
             构造方法详细信息-  ImageReaderSpiprotected ImageReaderSpi() 构造一个空白ImageReaderSpi。 初始化实例变量和/或覆盖方法实现的子类是为了提供所有方法的工作版本。
 -  ImageReaderSpipublic ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class<?>[] 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- 供应商名称,作为非nullString。
-  
              version- 版本标识符,作为非nullString。
-  
              names- 表示格式名称的非null数组String。 必须至少有一个条目。
-  
              suffixes- 表示公共文件后缀的Strings的数组。 如果未定义任何后缀,则应提供null。 长度为0的数组将被归一化为null。
-  
              MIMETypes- 表示格式的MIME类型的String的数组。 如果未定义MIME类型,则应提供null。 长度为0的数组将被归一化为null。
-  
              readerClassName- 相关联的ImageReader类的完全限定名称,作为非null String。
-  
              inputTypes- 长度为至少为1的Class对象的非null数组,指示合法输入类型。
-  
              writerSpiNames- 一个数组String命名所有关联的ImageWriters或null。 长度为0的数组被归一化为null。
-  
              supportsStandardStreamMetadataFormat- 表示流元数据对象是否可以使用由标准元数据格式描述的树的boolean。
-  
              nativeStreamMetadataFormatName- aString或null,将从getNativeStreamMetadataFormatName返回。
-  
              nativeStreamMetadataFormatClassName- aString或null,用于实例化从getNativeStreamMetadataFormat返回的元数据格式对象。
-  
              extraStreamMetadataFormatNames- 要从getExtraStreamMetadataFormatNames返回的Strings或null的数组。 长度为0的数组被归一化为null。
-  
              extraStreamMetadataFormatClassNames- 用于实例化要从getStreamMetadataFormat返回的元数据格式对象的Strings或null的数组。 长度为0的数组被归一化为null。
-  
              supportsStandardImageMetadataFormat- 表示图像元数据对象是否可以使用由标准元数据格式描述的树的boolean。
-  
              nativeImageMetadataFormatName- aString或null,将从getNativeImageMetadataFormatName返回。
-  
              nativeImageMetadataFormatClassName- aString或null,用于实例化要从getNativeImageMetadataFormat返回的元数据格式对象。
-  
              extraImageMetadataFormatNames-的阵列String从返回小号getExtraImageMetadataFormatNames。 长度为0的数组被归一化为null。
-  
              extraImageMetadataFormatClassNames- 用于实例化从getImageMetadataFormat返回的元数据格式对象的Strings或null的数组。 长度为0的数组被归一化为null。
- 异常
-  
              IllegalArgumentException- 如果vendorName是null。
-  
              IllegalArgumentException- 如果version是null。
-  
              IllegalArgumentException- 如果names是null或长度为0。
-  
              IllegalArgumentException- 如果readerClassName是null。
-  
              IllegalArgumentException- 如果inputTypes为null或长度为0。
 
 
-  
 -  
             方法详细信息-  getInputTypespublic Class<?>[] getInputTypes() 返回一个Class对象的数组,指示可以将什么类型的对象用作读者setInput方法的参数。对于只接受来自 ImageInputStream输入的大多数读者,应该返回包含ImageInputStream.class的单元素数组。- 结果
-  
              null的Class对象的长度至少为1的数组。
 
 -  canDecodeInputpublic abstract boolean canDecodeInput(Object source) throws IOException 返回true如果提供的源对象看起来是这个读者支持的格式。 从这种方法返回true并不能保证阅读将成功,只是基于对流内容的简要检查,似乎有合理的成功机会。 如果源是一个ImageInputStream,实现将通常检查流的前几个字节与格式相关联的“魔术数”。 一旦实际读取开始,读取器可能仍然在解码完成之前的任何时间指示失败。重要的是,对象的状态不会受到干扰,以便其他 ImageReaderSpi可以正确地确定它们是否能够解码对象。 特别是,如果该源为ImageInputStream,一个mark/reset对应该用来保存流位置。可能会尝试读取几乎任何流的“raw”格式应该返回 false,以避免被调用而不是更接近的匹配。如果 source不是由getInputTypes返回的类的一个实例,则该方法应该简单地返回false。- 参数
-  
              source- 要解码的对象(通常为ImageInputStream)。
- 结果
-  
              true如果这个流可能被解码。
- 异常
-  
              IllegalArgumentException- 如果source是null。
-  
              IOException- 如果在读取流时发生I / O错误。
 
 -  createReaderInstancepublic ImageReader createReaderInstance() throws IOException 返回与此服务提供程序相关联的ImageReader实现的实例。 返回的对象最初将处于初始状态,就好像它的reset方法已被调用一样。默认实现只是返回 createReaderInstance(null)。- 结果
- 
               一个 
              ImageReader实例。
- 异常
-  
              IOException- 如果读取器类的加载或初始化期间或在读取器对象的实例化或初始化期间发生错误。
 
 -  createReaderInstancepublic abstract ImageReader createReaderInstance(Object extension) throws IOException 返回与此服务提供程序相关联的ImageReader实现的实例。 返回的对象最初将处于初始状态,就好像其reset方法已被调用一样。一个 Object可能在施工时提供给插件。 对象的性质是完全插件具体的。通常,插件将使用代码(如 return new MyImageReader(this)实现此方法。- 参数
-  
              extension- 一个插件特定的扩展对象,可以是null。
- 结果
- 
               一个 
              ImageReader例子。
- 异常
-  
              IOException- 如果尝试实例化读取器失败。
-  
              IllegalArgumentException- 如果ImageReader的构造函数抛出一个IllegalArgumentException来指示扩展对象不合适。
 
 -  isOwnReaderpublic boolean isOwnReader(ImageReader reader) 如果传入的ImageReader对象是与此服务提供商关联的ImageReader的实例,则返回true。默认实现将 reader参数的完全限定类名与传递给构造函数的类名进行比较。 如果需要更复杂的检查,该方法可能会被覆盖。- 参数
-  
              reader- 一个ImageReader实例。
- 结果
-  
              true如果识别reader。
- 异常
-  
              IllegalArgumentException- 如果reader是null。
 
 -  getImageWriterSpiNamespublic String[] getImageWriterSpiNames() 返回一个包含Strings的数组,String包含所有ImageWriterSpi类的完全限定名称,可以理解与该服务提供商关联的ImageReader所使用的内部元数据表示,或者如果没有指定null则ImageWriter。 如果返回非null值,则该值必须为非零长度。数组中的第一个项目必须是“首选”作者的服务提供商的名称,因为它将用于实例化由 ImageWriter返回的ImageIO.getImageWriter(ImageReader)。这个机制可以用来获得 ImageWriters,这将理解由ImageReader生成的非像素元数据的内部结构(见IIOTreeInfo)。 通过从ImageReader获取此数据并将其传递给使用此方法获得的ImageWriters之一,客户端程序可以读取图像,以某种方式进行修改,并在保留所有元数据的同时将其写回,而无需了解元数据的内部结构,甚至了解图像格式。- 结果
-  
              String的长度至少为1的数组,包含ImageWriterSpi或null。
- 另请参见:
-  
              ImageIO.getImageWriter(ImageReader)
 
 
-  
 
-