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