- 所有已实现的接口:
-
RegisterableService
ImageReader的服务提供者接口(SPI)。有关服务提供者类的更多信息,请参阅IIORegistry类的类注释。
每个ImageReaderSpi提供了关于其关联的ImageReader类的多种信息。
通过getVendorName、getDescription和getVersion方法可以获取定义SPI类的供应商名称和类的简要描述。这些方法可以国际化以提供特定于区域设置的输出。这些方法主要用于提供可用于组织弹出菜单或其他列表的简短、易读的信息。
可以通过getFormatNames、getFileSuffixes和getMIMETypes方法获取与服务关联的格式名称、文件后缀和MIME类型的列表。这些方法可用于根据手动格式选择、文件命名或MIME关联(例如,在通过HTTP访问文件或作为电子邮件附件时)识别用于解码特定文件或流的候选ImageReader。
通过canDecodeInput方法提供了一种更可靠的方法来确定哪些ImageReader可能能够解析特定的数据流。此方法允许服务提供者检查实际流内容。
最后,可以通过调用createReaderInstance方法获取与此服务提供者关联的ImageReader类的实例。任何繁重的初始化,如加载本机库或创建大型表,都应至少推迟到第一次调用此方法之前。
- 参见:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Class<?>[]要从getInputTypes返回的Class对象数组,最初为null。static final Class<?>[]已弃用。protected String[]要从getImageWriterSpiNames返回的字符串数组,最初为null。Fields declared in class javax.imageio.spi.ImageReaderWriterSpi
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormatFields declared in class javax.imageio.spi.IIOServiceProvider
vendorName, version -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected构造一个空白的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。 -
Method Summary
Modifier and TypeMethodDescriptionabstract booleancanDecodeInput(Object source) 如果提供的源对象似乎是此读取器支持的格式,则返回true。返回与此服务提供者关联的ImageReader实现的实例。abstract ImageReadercreateReaderInstance(Object extension) 返回与此服务提供者关联的ImageReader实现的实例。String[]返回包含所有能理解与此服务提供者关联的ImageReader使用的内部元数据表示的ImageWriterSpi类的完全限定名称的String数组,如果没有指定这样的ImageWriter,则返回null。Class<?>[]返回一个Class对象数组,指示可以用作读取器的setInput方法的参数类型。booleanisOwnReader(ImageReader reader) 如果传入的ImageReader对象是与此服务提供者关联的ImageReader的实例,则返回true。Methods declared in class javax.imageio.spi.ImageReaderWriterSpi
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupportedMethods declared in class javax.imageio.spi.IIOServiceProvider
getDescription, getVendorName, getVersion, onDeregistration, onRegistration
-
Field Details
-
STANDARD_INPUT_TYPE
Deprecated.Instead of using this field, directly create the equivalent array{ ImageInputStream.class }.从getInputTypes返回的初始包含ImageInputStream.class的单元素数组。 -
inputTypes
要从getInputTypes返回的Class对象数组,最初为null。 -
writerSpiNames
要从getImageWriterSpiNames返回的字符串数组,最初为null。
-
-
Constructor Details
-
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- 供应商名称,作为非null的String。 -
version- 版本标识符,作为非null的String。 -
names- 包含格式名称的非null的String数组。必须至少有一个条目。 -
suffixes- 包含常见文件后缀的String数组。如果未定义后缀,则应提供null。长度为0的数组将被规范化为null。 -
MIMETypes- 包含格式的MIME类型的String数组。如果未定义MIME类型,则应提供null。长度为0的数组将被规范化为null。 -
readerClassName- 关联的ImageReader类的完全限定名称,作为非null String。 -
inputTypes- 长度至少为1的Class对象数组,指示合法的输入类型。 -
writerSpiNames- 命名所有关联ImageWriter的类的String数组,或null。长度为0的数组将被规范化为null。 -
supportsStandardStreamMetadataFormat- 一个boolean,指示流元数据对象是否可以使用标准元数据格式描述的树。 -
nativeStreamMetadataFormatName- 从getNativeStreamMetadataFormatName返回的String,或null。 -
nativeStreamMetadataFormatClassName- 用于实例化元数据格式对象以从getNativeStreamMetadataFormat返回的String,或null。 -
extraStreamMetadataFormatNames- 从getExtraStreamMetadataFormatNames返回的String数组,或null。长度为0的数组将被规范化为null。 -
extraStreamMetadataFormatClassNames- 用于实例化元数据格式对象以从getStreamMetadataFormat返回的String数组,或null。长度为0的数组将被规范化为null。 -
supportsStandardImageMetadataFormat- 一个boolean,指示图像元数据对象是否可以使用标准元数据格式描述的树。 -
nativeImageMetadataFormatName- 从getNativeImageMetadataFormatName返回的String,或null。 -
nativeImageMetadataFormatClassName- 用于实例化元数据格式对象以从getNativeImageMetadataFormat返回的String,或null。 -
extraImageMetadataFormatNames- 从getExtraImageMetadataFormatNames返回的String数组。长度为0的数组将被规范化为null。 -
extraImageMetadataFormatClassNames- 用于实例化元数据格式对象以从getImageMetadataFormat返回的String数组,或null。长度为0的数组将被规范化为null。 - 抛出:
-
IllegalArgumentException- 如果vendorName为null。 -
IllegalArgumentException- 如果version为null。 -
IllegalArgumentException- 如果names为null或长度为0。 -
IllegalArgumentException- 如果readerClassName为null。 -
IllegalArgumentException- 如果inputTypes为null或长度为0。
-
-
Method Details
-
getInputTypes
返回一个Class对象数组,指示可以用作读取器的setInput方法的参数类型。对于大多数只接受来自
ImageInputStream的输入的读取器,应返回包含ImageInputStream.class的单元素数组。- 返回:
-
至少包含1个元素的非
null的Class对象数组。
-
canDecodeInput
如果提供的源对象似乎是此读取器支持的格式,则返回true。从此方法返回true并不保证读取将成功,只是根据对流内容的简要检查,似乎有合理的成功机会。如果源是ImageInputStream,实现通常会检查流的前几个字节,以查找与格式相关联的“魔数”。一旦实际读取开始,读取器仍可能在解码完成之前的任何时间指示失败。重要的是不要破坏对象的状态,以便其他
ImageReaderSpi可以正确确定它们是否能够解码对象。特别是,如果源是ImageInputStream,应使用mark/reset对来保留流位置。诸如“原始”之类的格式,可能尝试读取几乎任何流的格式,应返回
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实例。 - 返回:
-
如果
reader被识别,则返回true。 - 抛出:
-
IllegalArgumentException- 如果reader为null。
-
getImageWriterSpiNames
返回一个包含所有能理解与此服务提供者关联的ImageReader使用的内部元数据表示的ImageWriterSpi类的完全限定名称的String数组,如果没有指定这样的ImageWriter,则返回null。如果返回非null值,则其长度必须为非零。数组中的第一项必须是“首选”写入器的服务提供者的名称,因为它将用于实例化
ImageIO.getImageWriter(ImageReader)返回的ImageWriter。此机制可用于获取将理解由
ImageReader生成的非像素元数据内部结构(参见IIOTreeInfo)的ImageWriters。通过从ImageReader获取此数据并将其传递给使用此方法获取的ImageWriters之一,客户端程序可以读取图像,以某种方式修改它,并在保留所有元数据的同时将其写回,而无需了解任何关于元数据的内部结构,甚至关于图像格式的信息。- 返回:
-
至少包含1个
ImageWriterSpi名称的String数组,或null。 - 参见:
-
{ ImageInputStream.class }。