- 所有已实现的接口:
RegisterableService
ImageWriters 的服务提供商接口 (SPI)。有关服务提供者类的更多信息,请参阅 IIORegistry 类的类注解。
每个 ImageWriterSpi 都提供有关与其关联的 ImageWriter 类的几种类型的信息。
定义 SPI 类的供应商名称和类的简要说明可通过 getVendorName、getDescription 和 getVersion 方法获得。这些方法可以国际化以提供特定于locale的输出。这些方法主要用于提供简短的、人类可写的信息,这些信息可用于组织弹出菜单或其他列表。
可以通过 getFormatNames 、 getFileSuffixes 和 getMIMEType 方法获取与服务关联的格式名称、文件后缀和 MIME 类型的列表。这些方法可用于根据手动格式选择、文件命名或 MIME 关联来识别用于编写特定文件或流的候选 ImageWriter s。
canEncodeImage 方法提供了一种更可靠的方法来确定哪些 ImageWriter 可能能够解析特定数据流。此方法允许服务提供商检查实际图像内容。
最后,可以通过调用 createWriterInstance 方法获得与该服务提供者关联的 ImageWriter 类的实例。任何重量级的初始化,例如本地库的加载或大型表的创建,都应该至少推迟到第一次调用此方法时。
- 参见:
-
字段摘要
字段修饰符和类型Field描述protected Class<?>[]从getOutputTypes返回的Class对象数组,最初是null。protected String[]要从getImageReaderSpiNames返回的字符串数组,最初是null。static final Class<?>[]已弃用。在类 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构造一个空白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。 -
方法总结
修饰符和类型方法描述boolean如果与此服务提供商关联的ImageWriter实现能够对给定的RenderedImage实例进行编码,则返回true。abstract boolean如果与此服务提供商关联的ImageWriter实现能够使用给定布局对图像进行编码,则返回true。返回与此服务提供商关联的ImageWriter实现的实例。abstract ImageWritercreateWriterInstance(Object extension) 返回与此服务提供商关联的ImageWriter实现的实例。String[]返回一个String的数组,其中包含所有ImageReaderSpi类的所有完全限定名称,这些类可以理解与此服务提供商关联的ImageWriter使用的内部元数据表示,或者null如果没有指定这样的ImageReaders。Class<?>[]返回一个Class对象数组,指示哪些类型的对象可以用作作者的setOutput方法的参数。boolean如果此编写器输出的格式精确地保留像素数据,则返回true。booleanisOwnWriter(ImageWriter writer) 如果传入的ImageWriter对象是与此服务提供商关联的ImageWriter的实例,则返回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_OUTPUT_TYPE
已弃用。不使用此字段,而是直接创建等效数组{ ImageOutputStream.class }。一个单元素数组,最初包含ImageOutputStream.class,将从getOutputTypes返回。 -
outputTypes
从getOutputTypes返回的Class对象数组,最初是null。 -
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-String的非null数组,指示格式名称。必须至少存在一项。suffixes- 指示通用文件后缀的String数组。如果未定义后缀,则应提供null。长度为 0 的数组将被规范化为null。MIMETypes- 指示格式的 MIME 类型的String数组。如果未定义后缀,则应提供null。长度为 0 的数组将被规范化为null。writerClassName- 关联的ImageWriterSpi类的完全限定名称,作为非null String。outputTypes- 长度至少为 1 的Class对象数组,指示合法输出类型。readerSpiNames- 长度至少为 1 的数组String命名所有关联的ImageReader或null的类。长度为 0 的数组被标准化为null。supportsStandardStreamMetadataFormat- 一个boolean指示流元数据对象是否可以使用标准元数据格式描述的树。nativeStreamMetadataFormatName- 从getNativeStreamMetadataFormatName返回的String或null。nativeStreamMetadataFormatClassName- 一个String或null,用于实例化要从getNativeStreamMetadataFormat返回的元数据格式对象。extraStreamMetadataFormatNames- 从getExtraStreamMetadataFormatNames返回的String或null的数组。长度为 0 的数组被标准化为null。extraStreamMetadataFormatClassNames-String或null的数组,用于实例化要从getStreamMetadataFormat返回的元数据格式对象。长度为 0 的数组被标准化为null。supportsStandardImageMetadataFormat- 一个boolean指示图像元数据对象是否可以使用标准元数据格式描述的树。nativeImageMetadataFormatName- 从getNativeImageMetadataFormatName返回的String或null。nativeImageMetadataFormatClassName- 一个String或null,用于实例化要从getNativeImageMetadataFormat返回的元数据格式对象。extraImageMetadataFormatNames- 要从getExtraImageMetadataFormatNames返回的String数组。长度为 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。
-
-
方法详情
-
isFormatLossless
public boolean isFormatLossless()如果此编写器输出的格式精确地保留像素数据,则返回true。默认实现返回true。- 返回:
true如果格式保留全像素精度。
-
getOutputTypes
返回一个Class对象数组,指示哪些类型的对象可以用作作者的setOutput方法的参数。对于仅输出到
ImageOutputStream的大多数编写器,应返回包含ImageOutputStream.class的单元素数组。- 返回:
-
长度至少为 1 的
Class对象的非null数组。
-
canEncodeImage
如果与此服务提供商关联的ImageWriter实现能够使用给定布局对图像进行编码,则返回true。布局 (IE,图像的SampleModel和ColorModel) 由ImageTypeSpecifier对象描述。true的返回值并不是编码成功的绝对保证;编码过程仍然可能由于 I/O 错误、不一致或格式错误的数据结构等因素而产生错误。目的是对图像的基本结构进行合理的检查,以确定它是否在编码格式的范围。例如,如果传递给 RGBBufferedImage,则只能对灰度进行编码的格式的服务提供商将返回false。同样,可以对 8 位 RGB 图像进行编码的格式的服务提供商可能会拒绝使用关联的 alpha 通道对图像进行编码。不同的
ImageWriter以及服务提供商可能会选择更严格或更不严格。例如,他们可能会接受具有预乘 alpha 的图像,即使它必须从每个像素中分离出来,但会损失一些精度,以便存储。- 参数:
type- 一个ImageTypeSpecifier指定要写入的图像的布局。- 返回:
true作者是否能够使用给定的布局对图像进行编码。- 抛出:
IllegalArgumentException- 如果type是null。
-
canEncodeImage
如果与此服务提供商关联的ImageWriter实现能够对给定的RenderedImage实例进行编码,则返回true。请注意,这包括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实例。- 返回:
true如果writer被识别- 抛出:
IllegalArgumentException- 如果writer是null。
-
getImageReaderSpiNames
返回一个String的数组,其中包含所有ImageReaderSpi类的所有完全限定名称,这些类可以理解与此服务提供商关联的ImageWriter使用的内部元数据表示,或者null如果没有指定这样的ImageReaders。如果返回非null值,则它的长度必须非零。数组中的第一项必须是“首选”阅读器的服务提供商的名称,因为它将用于实例化
ImageIO.getImageReader(ImageWriter)返回的ImageReader。此机制可用于获取
ImageReaders,它将以ImageWriter理解的结构生成非像素元数据(参见IIOExtraDataInfo)。通过读取图像并从使用此方法获得的ImageReaders之一获取此数据并将其传递给ImageWriter,客户端程序可以读取图像,以某种方式修改它,然后将其写回保留所有元数据,无需了解元数据的内部结构,甚至图像格式。- 返回:
-
长度至少为 1 的
String数组,包含ImageReaderSpi或null的名称。 - 参见:
-
{ ImageOutputStream.class }。