- 所有已实现的接口:
-
RegisterableService
ImageWriter的服务提供者接口(SPI)。有关服务提供者类的更多信息,请参阅IIORegistry类的类注释。
每个ImageWriterSpi通过getVendorName、getDescription和getVersion方法提供与其关联的ImageWriter类的有关信息。这些方法可以国际化以提供特定于区域设置的输出。这些方法主要用于提供可用于组织弹出菜单或其他列表的简短、人类可读的信息。
通过getFormatNames、getFileSuffixes和getMIMEType方法可以获取与服务关联的格式名称、文件后缀和MIME类型的列表。这些方法可用于根据手动格式选择、文件命名或MIME关联来识别用于写入特定文件或流的候选ImageWriter。
通过canEncodeImage方法提供了一种更可靠的方法来确定哪些ImageWriter可能能够解析特定数据流。此方法允许服务提供者检查实际的图像内容。
最后,可以通过调用createWriterInstance方法来获取与此服务提供者关联的ImageWriter类的实例。任何繁重的初始化,如加载本机库或创建大型表,都应至少推迟到第一次调用此方法时。
- 参见:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Class<?>[]从getOutputTypes返回的Class对象数组,最初为null。protected String[]从getImageReaderSpiNames返回的字符串数组,最初为null。static final Class<?>[]已弃用。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构造一个空白的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。 -
Method Summary
Modifier and TypeMethodDescriptionboolean如果与此服务提供者关联的ImageWriter实现能够对给定的RenderedImage实例进行编码,则返回true。abstract boolean如果与此服务提供者关联的ImageWriter实现能够对具有给定布局的图像进行编码,则返回true。返回与此服务提供者关联的ImageWriter实现的实例。abstract ImageWritercreateWriterInstance(Object extension) 返回与此服务提供者关联的ImageWriter实现的实例。String[]返回一个包含所有ImageReaderSpi类的完全限定名称的String数组,这些类可以理解与此服务提供者关联的ImageWriter使用的内部元数据表示,如果没有指定这样的ImageReader,则返回null。Class<?>[]返回一个Class对象数组,指示可以用作写入器的setOutput方法的参数类型。boolean如果此写入器输出的格式保留像素数据的位精确度,则返回true。booleanisOwnWriter(ImageWriter writer) 如果传入的ImageWriter对象是与此服务提供者关联的ImageWriter的实例,则返回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_OUTPUT_TYPE
Deprecated.Instead of using this field, directly create the equivalent array{ ImageOutputStream.class }.从getOutputTypes返回的单元素数组,最初包含ImageOutputStream.class。 -
outputTypes
从getOutputTypes返回的Class对象数组,最初为null。 -
readerSpiNames
从getImageReaderSpiNames返回的字符串数组,最初为null。
-
-
Constructor Details
-
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数组,指示格式名称。必须至少有一个条目。 -
suffixes- 一个String数组,指示常见的文件后缀。如果未定义后缀,则应提供null。长度为0的数组将被规范化为null。 -
MIMETypes- 一个String数组,指示格式的MIME类型。如果未定义后缀,则应提供null。长度为0的数组将被规范化为null。 -
writerClassName- 与关联的ImageWriterSpi类的完全限定名称,作为非null String。 -
outputTypes- 长度至少为1的Class对象数组,指示合法的输出类型。 -
readerSpiNames- 长度至少为1的String数组,命名所有关联的ImageReader类,或null。长度为0的数组将被规范化为null。 -
supportsStandardStreamMetadataFormat- 一个boolean,指示流元数据对象是否可以使用标准元数据格式描述的树。 -
nativeStreamMetadataFormatName- 一个String,或null,将从getNativeStreamMetadataFormatName返回。 -
nativeStreamMetadataFormatClassName- 一个String,或null,用于实例化一个元数据格式对象,将从getNativeStreamMetadataFormat返回。 -
extraStreamMetadataFormatNames- 一个String数组,或null,将从getExtraStreamMetadataFormatNames返回。长度为0的数组将被规范化为null。 -
extraStreamMetadataFormatClassNames- 一个String数组,或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- 如果writerClassName为null。 -
IllegalArgumentException- 如果outputTypes为null或长度为0。
-
-
Method Details
-
isFormatLossless
public boolean isFormatLossless()如果此写入器输出的格式保留像素数据的位精确度,则返回true。默认实现返回true。- 返回:
-
如果格式保留完整像素精度,则返回
true。
-
getOutputTypes
返回一个Class对象数组,指示可以用作写入器的setOutput方法的参数类型。对于大多数只输出到
ImageOutputStream的写入器,应返回一个包含ImageOutputStream.class的单元素数组。- 返回:
-
长度至少为1的非
null的Class对象数组。
-
canEncodeImage
返回true,如果与此服务提供者关联的ImageWriter实现能够使用给定布局对图像进行编码。布局(即图像的SampleModel和ColorModel)由ImageTypeSpecifier对象描述。true的返回值并不绝对保证成功编码;由于诸如I/O错误、不一致或格式错误的数据结构等因素,编码过程仍可能产生错误。其目的是为了通过对图像的基本结构进行合理检查,以确定其是否符合编码格式的范围。例如,对于只能编码灰度图像的格式的服务提供者,如果传递了RGBBufferedImage,则会返回false。同样,对于可以编码8位RGB图像的格式的服务提供者,可能会拒绝编码带有关联alpha通道的图像。不同的
ImageWriter和因此服务提供者可能选择更加严格或宽松。例如,它们可能接受具有预乘alpha的图像,尽管在存储之前必须从每个像素中除去它,这会导致一定程度的精度损失。- 参数:
-
type- 指定要写入的图像布局的ImageTypeSpecifier。 - 返回:
-
如果此写入器可能能够编码具有给定布局的图像,则返回
true。 - 抛出:
-
IllegalArgumentException- 如果type为null。
-
canEncodeImage
返回true,如果与此服务提供者关联的ImageWriter实现能够编码给定的RenderedImage实例。请注意,这包括java.awt.image.BufferedImage的实例。有关此方法语义的信息,请参阅
canEncodeImage(ImageTypeSpecifier)的讨论。- 参数:
-
im- 要编码的RenderedImage实例。 - 返回:
-
如果此写入器可能能够编码此图像,则返回
true。 - 抛出:
-
IllegalArgumentException- 如果im为null。
-
createWriterInstance
返回与此服务提供者关联的ImageWriter实现的实例。返回的对象最初将处于初始状态,就好像其reset方法已被调用一样。默认实现只是返回
createWriterInstance(null)。- 返回:
-
一个
ImageWriter实例。 - 抛出:
-
IOException- 如果在加载、初始化写入器类或实例化、初始化写入器对象过程中发生错误。
-
createWriterInstance
返回与此服务提供者关联的ImageWriter实现的实例。返回的对象最初将处于初始状态,就好像其reset方法已被调用一样。在构造时,可以向插件提供一个
Object。该对象的性质完全取决于插件。通常,插件将使用类似
return new MyImageWriter(this)的代码来实现此方法。- 参数:
-
extension- 插件特定的扩展对象,可以为null。 - 返回:
-
一个
ImageWriter实例。 - 抛出:
-
IOException- 如果尝试实例化写入器失败。 -
IllegalArgumentException- 如果ImageWriter的构造函数抛出IllegalArgumentException以指示扩展对象不适合。
-
isOwnWriter
如果传入的ImageWriter对象是与此服务提供者关联的ImageWriter的实例,则返回true。- 参数:
-
writer- 一个ImageWriter实例。 - 返回:
-
如果识别
writer,则返回true。 - 抛出:
-
IllegalArgumentException- 如果writer为null。
-
getImageReaderSpiNames
返回一个包含所有与此服务提供者关联的ImageWriter能够理解内部元数据表示的所有ImageReaderSpi类的完全限定名称的String数组,如果没有指定这样的ImageReaders,则返回null。如果返回非null值,则其长度必须为非零。数组中的第一项必须是“首选”读取器的服务提供者的名称,因为它将用于实例化
ImageIO.getImageReader(ImageWriter)返回的ImageReader。此机制可用于获取将生成非像素元数据(参见
IIOExtraDataInfo)的ImageReaders,以便以ImageWriter理解的结构传递给ImageWriter。通过从使用此方法获取的ImageReaders之一读取图像并获取此数据,并将其传递给ImageWriter,客户端程序可以读取图像,以某种方式修改它,并将其写回,同时保留所有元数据,而无需了解元数据的内部结构,甚至了解图像格式。- 返回:
-
包含至少一个
ImageReaderSpi名称的String数组,或null。 - 参见:
-
{ ImageOutputStream.class }。