- java.lang.Object
-
- javax.imageio.spi.IIOServiceProvider
-
- javax.imageio.spi.ImageReaderWriterSpi
-
- javax.imageio.spi.ImageWriterSpi
-
- All Implemented Interfaces:
-
RegisterableService
public abstract class ImageWriterSpi extends ImageReaderWriterSpi
服务提供商接口(SPI),用于ImageWriter
s。 有关服务提供商类的更多信息,请参阅IIORegistry
类的类注释。每个
ImageWriterSpi
提供了与它相关联的ImageWriter
类的几种类型的信息。谁定义的SPI类和类的简要描述的供应商的名称是通过提供
getVendorName
,getDescription
,并getVersion
方法。 这些方法可以被国际化以提供特定于区域的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的人类可写信息。格式名称,文件后缀,以及与该服务相关联MIME类型的列表可通过的方式获得
getFormatNames
,getFileSuffixes
,和getMIMEType
方法。 这些方法可用于识别基于手动格式选择,文件命名或MIME关联来编写特定文件或流的候选者ImageWriter
。通过
canEncodeImage
方法提供了一种更可靠的方法来确定哪些ImageWriter
可能能够解析特定的数据流。 此方法允许服务提供商检查实际的图像内容。最后,可以通过调用
createWriterInstance
方法获得与此服务提供商相关联的ImageWriter
类的实例。 任何重量级的初始化(如加载本机库或创建大型表)至少应该延迟至首次调用此方法为止。- 另请参见:
-
IIORegistry
,ImageTypeSpecifier
,ImageWriter
-
-
Field Summary
Fields Modifier and Type Field 描述 protected Class<?>[]
outputTypes
一组Class
对象,从getOutputTypes
返回,最初为null
。protected String[]
readerSpiNames
要从getImageReaderSpiNames
返回的字符串数组,最初为null
。static Class<?>[]
STANDARD_OUTPUT_TYPE
已过时。而不是使用这个字段,直接创建等效的数组{ ImageOutputStream.class }
。-
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
ImageWriterSpi()
构造一个空白ImageWriterSpi
。ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, Class<?>[] outputTypes, String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
构造一个给定值的一个ImageWriterSpi
。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 boolean
canEncodeImage(RenderedImage im)
返回true
如果ImageWriter
与此服务提供者关联实现能够编码给定的RenderedImage
实例。abstract boolean
canEncodeImage(ImageTypeSpecifier type)
如果与此服务提供商相关联的ImageWriter
实现能够对具有给定布局的图像进行编码,则返回true
。ImageWriter
createWriterInstance()
返回与该服务提供商相关联的ImageWriter
实现的实例。abstract ImageWriter
createWriterInstance(Object extension)
返回与此服务提供商关联的ImageWriter
实现的实例。String[]
getImageReaderSpiNames()
返回一个包含String
的数组,String
包含所有ImageReaderSpi
类的所有完全限定名称,可以理解与该服务提供商关联的ImageWriter
所使用的内部元数据表示,如果没有指定null
则ImageReaders
。Class<?>[]
getOutputTypes()
返回一个Class
对象的数组,指示可以将什么类型的对象用作作者setOutput
方法的参数。boolean
isFormatLossless()
如果此写入器输出的格式可精确保留像素数据,则返回true
。boolean
isOwnWriter(ImageWriter writer)
如果传递的ImageWriter
对象是与此服务提供商关联的ImageWriter
的实例,则返回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_OUTPUT_TYPE
@Deprecated public static final Class<?>[] STANDARD_OUTPUT_TYPE
已过时。 而不是使用这个字段,直接创建等效的数组{ ImageOutputStream.class }
。一个单元素数组,最初包含ImageOutputStream.class
,从getOutputTypes
返回。
-
outputTypes
protected Class<?>[] outputTypes
一组Class
对象,从getOutputTypes
返回,最初为null
。
-
readerSpiNames
protected String[] readerSpiNames
要从getImageReaderSpiNames
返回的字符串数组,最初为null
。
-
-
构造方法详细信息
-
ImageWriterSpi
protected ImageWriterSpi()
构造一个空白ImageWriterSpi
。 初始化实例变量和/或覆盖方法实现的子类是为了提供所有方法的工作版本。
-
ImageWriterSpi
public ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, Class<?>[] outputTypes, String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
构造一个给定值的一个ImageWriterSpi
。- 参数
-
vendorName
- 供应商名称,作为非null
String
。 -
version
- 版本标识符,作为非null
String
。 -
names
- 表示格式名称的非null
数组String
s。 必须至少有一个条目。 -
suffixes
- 表示公共文件后缀的String
的数组。 如果未定义后缀,则应提供null
。 长度为0的数组将被归一化为null
。 -
MIMETypes
- 表示格式的MIME类型的String
s的数组。 如果未定义任何后缀,则应提供null
。 长度为0的数组将被归一化为null
。 -
writerClassName
- 相关联的ImageWriterSpi
类的完全限定名称,作为非null String
。 -
outputTypes
- 长度为至少为1的Class
对象的数组,指示合法的输出类型。 -
readerSpiNames
- 数组String
的长度至少为1,命名所有关联的ImageReader
s的类,或null
。 长度为0的数组被归一化为null
。 -
supportsStandardStreamMetadataFormat
- 表示流元数据对象是否可以使用由标准元数据格式描述的树的boolean
。 -
nativeStreamMetadataFormatName
- aString
或null
,由getNativeStreamMetadataFormatName
。 -
nativeStreamMetadataFormatClassName
- aString
或null
,用于实例化从getNativeStreamMetadataFormat
返回的元数据格式对象。 -
extraStreamMetadataFormatNames
-的阵列String
S或null
从返回,getExtraStreamMetadataFormatNames
。 长度为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
- 如果writerClassName
是null
。 -
IllegalArgumentException
- 如果outputTypes
是null
或长度为0。
-
-
方法详细信息
-
isFormatLossless
public boolean isFormatLossless()
如果此写入器输出的格式可精确保留像素数据,则返回true
。 默认实现返回true
。- 结果
-
true
如果格式保留了完整的像素精度。
-
getOutputTypes
public Class<?>[] getOutputTypes()
返回一个Class
对象的数组,指示可以使用什么类型的对象作为撰写者的setOutput
方法的参数。对于只输出到
ImageOutputStream
大多数作者,应该返回包含ImageOutputStream.class
的单元素数组。- 结果
-
一个长度至少为1的非
null
数组的Class
对象。
-
canEncodeImage
public abstract boolean canEncodeImage(ImageTypeSpecifier type)
如果与此服务提供商相关联的ImageWriter
实现能够对具有给定布局的图像进行编码,则返回true
。 布局( 即 ,图像的SampleModel
和ColorModel
)由ImageTypeSpecifier
对象描述。返回值为
true
并不是编码成功的绝对保证; 编码过程可能由于诸如I / O错误,不一致或畸形数据结构等因素而产生错误。意图是对图像的基本结构进行合理的检查,以便确定它是否在范围的编码格式。 例如,只能编码灰度的格式的服务提供商将返回false
如果交给RGBBufferedImage
。 类似地,可以编码8位RGB图像的格式的服务提供商可能拒绝对具有相关联的Alpha通道的图像进行编码。不同的
ImageWriter
s,因此服务提供商,可能会选择或多或少严格。 例如,他们可能接受具有预乘法α的图像,即使它们必须被分割出每个像素,以某种精度损失,以便被存储。- 参数
-
type
- 指定要写入的图像的布局的ImageTypeSpecifier
。 - 结果
-
true
如果这个作者可能能够用给定的布局编码图像。 - 异常
-
IllegalArgumentException
- 如果type
是null
。
-
canEncodeImage
public boolean canEncodeImage(RenderedImage im)
返回true
如果ImageWriter
与此服务提供者关联实现能够编码给定的RenderedImage
实例。 请注意,这包括java.awt.image.BufferedImage
实例。有关此方法的语义的信息,请参阅
canEncodeImage(ImageTypeSpecifier)
的讨论。- 参数
-
im
- 要编码的RenderedImage
的实例。 - 结果
-
true
如果这个作者有可能对这个图像进行编码。 - 异常
-
IllegalArgumentException
- 如果im
是null
。
-
createWriterInstance
public ImageWriter createWriterInstance() throws IOException
返回与此服务提供商相关联的ImageWriter
实现的实例。 返回的对象最初将处于初始状态,就像其reset
方法被调用一样。默认实现只是返回
createWriterInstance(null)
。- 结果
-
一个
ImageWriter
例子。 - 异常
-
IOException
- 如果写入器类的加载或初始化期间或在写入器对象的实例化或初始化期间发生错误。
-
createWriterInstance
public abstract ImageWriter createWriterInstance(Object extension) throws IOException
返回与此服务提供商关联的ImageWriter
实现的实例。 返回的对象最初将处于初始状态,就像它的reset
方法被调用一样。在施工时可以向插件提供
Object
。 对象的性质是完全插件具体的。通常,插件将使用代码(如
return new MyImageWriter(this)
来实现此方法。- 参数
-
extension
- 插件特定的扩展对象,可以是null
。 - 结果
-
一个
ImageWriter
例子。 - 异常
-
IOException
- 如果尝试实例化写入程序失败。 -
IllegalArgumentException
- 如果ImageWriter
的构造函数抛出一个IllegalArgumentException
来指示扩展对象不合适。
-
isOwnWriter
public boolean isOwnWriter(ImageWriter writer)
如果传入的ImageWriter
对象是与此服务提供商关联的ImageWriter
的实例,则返回true
。- 参数
-
writer
- 一个ImageWriter
实例。 - 结果
-
true
如果writer
认识 - 异常
-
IllegalArgumentException
- 如果writer
是null
。
-
getImageReaderSpiNames
public String[] getImageReaderSpiNames()
返回的数组String
包含所有的所有的完全合格的名称小号ImageReaderSpi
类,可以理解由所使用的内部元数据表示ImageWriter
与此服务提供商相关联,或null
,如果没有这样的ImageReaders
指定。 如果返回非null
值,那么它必须具有非零长度。数组中的第一个项目必须是“首选”读者的服务提供商的名称,因为它将用于实例化由
ImageReader
返回的ImageIO.getImageReader(ImageWriter)
。该机制可用于获得在
ImageReaders
理解的结构中将产生非像素元数据(见IIOExtraDataInfo
)的ImageWriter
。 通过读取图像并从使用此方法获取的ImageReaders
之一获取此数据,并将其传递给ImageWriter
,客户端程序可以读取图像,以某种方式进行修改,并将其写回保留所有元数据,而不需要了解元数据的内部结构,甚至了解图像格式。- 结果
-
String
的长度至少为1的数组,包含ImageReaderSpi
s或null
。 - 另请参见:
-
ImageIO.getImageReader(ImageWriter)
,ImageReaderSpi.getImageWriterSpiNames()
-
-