- 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),用于ImageWriters。 有关服务提供商类的更多信息,请参阅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 描述 protectedImageWriterSpi()构造一个空白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 方法 描述 booleancanEncodeImage(RenderedImage im)返回true如果ImageWriter与此服务提供者关联实现能够编码给定的RenderedImage实例。abstract booleancanEncodeImage(ImageTypeSpecifier type)如果与此服务提供商相关联的ImageWriter实现能够对具有给定布局的图像进行编码,则返回true。ImageWritercreateWriterInstance()返回与该服务提供商相关联的ImageWriter实现的实例。abstract ImageWritercreateWriterInstance(Object extension)返回与此服务提供商关联的ImageWriter实现的实例。String[]getImageReaderSpiNames()返回一个包含String的数组,String包含所有ImageReaderSpi类的所有完全限定名称,可以理解与该服务提供商关联的ImageWriter所使用的内部元数据表示,如果没有指定null则ImageReaders。Class<?>[]getOutputTypes()返回一个Class对象的数组,指示可以将什么类型的对象用作作者setOutput方法的参数。booleanisFormatLossless()如果此写入器输出的格式可精确保留像素数据,则返回true。booleanisOwnWriter(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- 供应商名称,作为非nullString。 -
version- 版本标识符,作为非nullString。 -
names- 表示格式名称的非null数组Strings。 必须至少有一个条目。 -
suffixes- 表示公共文件后缀的String的数组。 如果未定义后缀,则应提供null。 长度为0的数组将被归一化为null。 -
MIMETypes- 表示格式的MIME类型的Strings的数组。 如果未定义任何后缀,则应提供null。 长度为0的数组将被归一化为null。 -
writerClassName- 相关联的ImageWriterSpi类的完全限定名称,作为非null String。 -
outputTypes- 长度为至少为1的Class对象的数组,指示合法的输出类型。 -
readerSpiNames- 数组String的长度至少为1,命名所有关联的ImageReaders的类,或null。 长度为0的数组被归一化为null。 -
supportsStandardStreamMetadataFormat- 表示流元数据对象是否可以使用由标准元数据格式描述的树的boolean。 -
nativeStreamMetadataFormatName- aString或null,由getNativeStreamMetadataFormatName。 -
nativeStreamMetadataFormatClassName- aString或null,用于实例化从getNativeStreamMetadataFormat返回的元数据格式对象。 -
extraStreamMetadataFormatNames-的阵列StringS或null从返回,getExtraStreamMetadataFormatNames。 长度为0的数组被归一化为null。 -
extraStreamMetadataFormatClassNames- 用于实例化要从getStreamMetadataFormat返回的元数据格式对象的Strings或null的数组。 长度为0的数组被归一化为null。 -
supportsStandardImageMetadataFormat- 表示图像元数据对象是否可以使用由标准元数据格式描述的树的boolean。 -
nativeImageMetadataFormatName- aString或null,将从getNativeImageMetadataFormatName返回。 -
nativeImageMetadataFormatClassName- aString或null,用于实例化要从getNativeImageMetadataFormat返回的元数据格式对象。 -
extraImageMetadataFormatNames-的阵列String从返回小号getExtraImageMetadataFormatNames。 长度为0的数组被归一化为null。 -
extraImageMetadataFormatClassNames- 用于实例化要从getImageMetadataFormat返回的元数据格式对象的Strings或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通道的图像进行编码。不同的
ImageWriters,因此服务提供商,可能会选择或多或少严格。 例如,他们可能接受具有预乘法α的图像,即使它们必须被分割出每个像素,以某种精度损失,以便被存储。- 参数
-
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的数组,包含ImageReaderSpis或null。 - 另请参见:
-
ImageIO.getImageReader(ImageWriter),ImageReaderSpi.getImageWriterSpiNames()
-
-