- 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),用于ImageReader
s。 有关服务提供程序类的更多信息,请参阅IIORegistry
类的类注释。每个
ImageReaderSpi
提供了与它相关联的ImageReader
类的几种类型的信息。谁定义的SPI类和类的简要描述的供应商的名称是通过提供
getVendorName
,getDescription
,并getVersion
方法。 这些方法可以被国际化以提供特定于区域的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的,可读的信息。格式名称,文件后缀,以及与该服务相关联MIME类型的列表可通过的方式获得
getFormatNames
,getFileSuffixes
,和getMIMETypes
方法。 这些方法可以用于识别基于手动格式选择,文件命名或MIME关联来解码特定文件或流的候选者ImageReader
s(例如,当通过HTTP访问文件或作为电子邮件附件时)。通过
canDecodeInput
方法提供了一种更可靠的方法来确定哪些ImageReader
可能能够解析特定的数据流。 此方法允许服务提供商检查实际的流内容。最后,可以通过调用
createReaderInstance
方法获得与此服务提供商相关联的ImageReader
类的实例。 任何重量级的初始化(如加载本机库或创建大型表)至少应该延迟至首次调用此方法为止。- 另请参见:
-
IIORegistry
,ImageReader
-
-
Field Summary
Fields 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.IIOServiceProvider
vendorName, version
-
Fields inherited from class javax.imageio.spi.ImageReaderWriterSpi
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
ImageReaderSpi()
构造一个空白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 boolean
canDecodeInput(Object source)
如果提供的源对象看起来是由该读者支持的格式,则返回true
。ImageReader
createReaderInstance()
返回与此服务提供商关联的ImageReader
实现的实例。abstract ImageReader
createReaderInstance(Object extension)
返回与此服务提供商关联的ImageReader
实现的实例。String[]
getImageWriterSpiNames()
返回的数组String
包含所有的完全合格的名称小号ImageWriterSpi
类,可以理解由所使用的内部元数据表示ImageReader
与此服务提供商相关联,或null
如果没有这样的ImageWriter
指定秒。Class<?>[]
getInputTypes()
返回一个Class
对象的数组,指示可以将什么类型的对象用作读者setInput
方法的参数。boolean
isOwnReader(ImageReader reader)
如果传递的ImageReader
对象是与此服务提供商关联的ImageReader
的实例,则返回true
。-
Methods inherited from class javax.imageio.spi.IIOServiceProvider
getDescription, getVendorName, getVersion, onDeregistration, onRegistration
-
Methods inherited from class javax.imageio.spi.ImageReaderWriterSpi
getExtraImageMetadataFormatNames, 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
返回。
-
inputTypes
protected Class<?>[] inputTypes
一组Class
对象从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, 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
s的数组。 如果未定义任何后缀,则应提供null
。 长度为0的数组将被归一化为null
。 -
MIMETypes
- 表示格式的MIME类型的String
的数组。 如果未定义MIME类型,则应提供null
。 长度为0的数组将被归一化为null
。 -
readerClassName
- 相关联的ImageReader
类的完全限定名称,作为非null String
。 -
inputTypes
- 长度为至少为1的Class
对象的非null
数组,指示合法输入类型。 -
writerSpiNames
- 一个数组String
命名所有关联的ImageWriter
s或null
。 长度为0的数组被归一化为null
。 -
supportsStandardStreamMetadataFormat
- 表示流元数据对象是否可以使用由标准元数据格式描述的树的boolean
。 -
nativeStreamMetadataFormatName
- aString
或null
,将从getNativeStreamMetadataFormatName
返回。 -
nativeStreamMetadataFormatClassName
- aString
或null
,用于实例化从getNativeStreamMetadataFormat
返回的元数据格式对象。 -
extraStreamMetadataFormatNames
- 要从getExtraStreamMetadataFormatNames
返回的String
s或null
的数组。 长度为0的数组被归一化为null
。 -
extraStreamMetadataFormatClassNames
- 用于实例化要从getStreamMetadataFormat
返回的元数据格式对象的String
s或null
的数组。 长度为0的数组被归一化为null
。 -
supportsStandardImageMetadataFormat
- 表示图像元数据对象是否可以使用由标准元数据格式描述的树的boolean
。 -
nativeImageMetadataFormatName
- aString
或null
,将从getNativeImageMetadataFormatName
返回。 -
nativeImageMetadataFormatClassName
- aString
或null
,用于实例化要从getNativeImageMetadataFormat
返回的元数据格式对象。 -
extraImageMetadataFormatNames
-的阵列String
从返回小号getExtraImageMetadataFormatNames
。 长度为0的数组被归一化为null
。 -
extraImageMetadataFormatClassNames
- 用于实例化从getImageMetadataFormat
返回的元数据格式对象的String
s或null
的数组。 长度为0的数组被归一化为null
。 - 异常
-
IllegalArgumentException
- 如果vendorName
是null
。 -
IllegalArgumentException
- 如果version
是null
。 -
IllegalArgumentException
- 如果names
是null
或长度为0。 -
IllegalArgumentException
- 如果readerClassName
是null
。 -
IllegalArgumentException
- 如果inputTypes
为null
或长度为0。
-
-
方法详细信息
-
getInputTypes
public Class<?>[] getInputTypes()
返回一个Class
对象的数组,指示可以将什么类型的对象用作读者setInput
方法的参数。对于只接受来自
ImageInputStream
输入的大多数读者,应该返回包含ImageInputStream.class
的单元素数组。- 结果
-
null
的Class
对象的长度至少为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
- 如果source
是null
。 -
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
- 如果reader
是null
。
-
getImageWriterSpiNames
public String[] getImageWriterSpiNames()
返回一个包含String
s的数组,String
包含所有ImageWriterSpi
类的完全限定名称,可以理解与该服务提供商关联的ImageReader
所使用的内部元数据表示,或者如果没有指定null
则ImageWriter
。 如果返回非null
值,则该值必须为非零长度。数组中的第一个项目必须是“首选”作者的服务提供商的名称,因为它将用于实例化由
ImageWriter
返回的ImageIO.getImageWriter(ImageReader)
。这个机制可以用来获得
ImageWriters
,这将理解由ImageReader
生成的非像素元数据的内部结构(见IIOTreeInfo
)。 通过从ImageReader
获取此数据并将其传递给使用此方法获得的ImageWriters
之一,客户端程序可以读取图像,以某种方式进行修改,并在保留所有元数据的同时将其写回,而无需了解元数据的内部结构,甚至了解图像格式。- 结果
-
String
的长度至少为1的数组,包含ImageWriterSpi
或null
。 - 另请参见:
-
ImageIO.getImageWriter(ImageReader)
-
-