- java.lang.Object
-
- javax.imageio.spi.IIOServiceProvider
-
- javax.imageio.spi.ImageReaderWriterSpi
-
- javax.imageio.spi.ImageReaderSpi
-
- 实现的所有接口
-
RegisterableService
public abstract class ImageReaderSpi extends ImageReaderWriterSpi
ImageReader
的服务提供者接口(SPI)。 有关服务提供者类的更多信息,请参阅IIORegistry
类的类注释。每个
ImageReaderSpi
提供了与其关联的ImageReader
类的几种类型的信息。谁定义的SPI类和类的简要描述的供应商的名称都可以通过现有
getVendorName
,getDescription
和getVersion
方法。 这些方法可以国际化以提供特定于语言环境的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的人类可读信息。可以通过
getFileSuffixes
和getMIMETypes
方法获得与服务相关联的格式名称,文件后缀和MIME类型的getFormatNames
。 这些方法可用于识别候选ImageReader
用于基于手动格式选择,文件命名或MIME关联(例如,通过HTTP或作为电子邮件附件访问文件时)对特定文件或流进行解码。canDecodeInput
方法提供了一种更可靠的方法来确定哪些ImageReader
可能能够解析特定数据流。 此方法允许服务提供者检查实际的流内容。最后,可以通过调用
createReaderInstance
方法获得与此服务提供者关联的ImageReader
类的实例。 任何重量级初始化(例如加载本机库或创建大型表)都应该至少延迟到第一次调用此方法为止。- 另请参见:
-
IIORegistry
,ImageReader
-
-
字段汇总
字段 变量和类型 字段 描述 protected 类<?>[]
inputTypes
要从getInputTypes
返回的类
对象的数组,最初为null
。static 类<?>[]
STANDARD_INPUT_TYPE
已过时。而不是使用此字段,直接创建等效数组{ ImageInputStream.class }
。protected String[]
writerSpiNames
要从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
。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
。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract boolean
canDecodeInput(Object source)
如果提供的源对象看起来具有此阅读器支持的格式,则返回true
。ImageReader
createReaderInstance()
返回与此服务提供者关联的ImageReader
实现的实例。abstract ImageReader
createReaderInstance(Object extension)
返回与此服务提供者关联的ImageReader
实现的实例。String[]
getImageWriterSpiNames()
返回的数组String
包含所有的完全合格的名称小号ImageWriterSpi
类,可以理解由所使用的内部元数据表示ImageReader
与此服务提供商相关联,或null
如果没有这样ImageWriter
指定秒。类<?>[]
getInputTypes()
返回一个类
对象的数组,指示可以将哪些类型的对象用作读者的setInput
方法的参数。boolean
isOwnReader(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
@Deprecated public 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
命名所有关联的类的ImageWriter
或null
。 长度为0的数组规范化为null
。 -
supportsStandardStreamMetadataFormat
-boolean
,指示流元数据对象是否可以使用标准元数据格式描述的树。 -
nativeStreamMetadataFormatName
-String
null
返回的String
或getNativeStreamMetadataFormatName
。 -
nativeStreamMetadataFormatClassName
-String
或null
,用于实例化从getNativeStreamMetadataFormat
返回的元数据格式对象。 -
extraStreamMetadataFormatNames
-的阵列String
S或null
从返回,getExtraStreamMetadataFormatNames
。 长度为0的数组规范化为null
。 -
extraStreamMetadataFormatClassNames
- 一个String
s或null
的数组,用于实例化要从getStreamMetadataFormat
返回的元数据格式对象。 长度为0的数组规范化为null
。 -
supportsStandardImageMetadataFormat
-boolean
,指示图像元数据对象是否可以使用标准元数据格式描述的树。 -
nativeImageMetadataFormatName
-一个String
,或null
,从返回getNativeImageMetadataFormatName
。 -
nativeImageMetadataFormatClassName
-String
或null
,用于实例化要从getNativeImageMetadataFormat
返回的元数据格式对象。 -
extraImageMetadataFormatNames
-的阵列String
从返回小号getExtraImageMetadataFormatNames
。 长度为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
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
- 如果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()
返回包含所有ImageWriterSpi
类的完全限定名称的String
数组,String
类可以理解与此服务提供者关联的ImageReader
使用的内部元数据表示形式,如果没有指定null
则ImageWriter
。 如果返回非null
值,则其长度必须为非零。数组中的第一项必须是“首选”
ImageWriter
的服务提供程序的名称,因为它将用于实例化ImageWriter
返回的ImageIO.getImageWriter(ImageReader)
。该机制可用于获得
ImageWriters
,其将理解由ImageReader
生成的非像素元数据(参见IIOTreeInfo
)的内部结构。 通过从ImageReader
获取此数据并将其传递给使用此方法获得的ImageWriters
之一,客户端程序可以读取图像,以某种方式修改它,并在保留所有元数据的同时将其写回,而不必了解有关元数据内部结构的任何信息,甚至是图像格式。- 结果
-
长度至少为1的
String
s数组,包含ImageWriterSpi
或null
名称。 - 另请参见:
-
ImageIO.getImageWriter(ImageReader)
-
-