- 所有已实现的接口:
RegisterableService
ImageWriter
s 的服务提供商接口 (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 ImageWriter
createWriterInstance
(Object extension) 返回与此服务提供商关联的ImageWriter
实现的实例。String[]
返回一个String
的数组,其中包含所有ImageReaderSpi
类的所有完全限定名称,这些类可以理解与此服务提供商关联的ImageWriter
使用的内部元数据表示,或者null
如果没有指定这样的ImageReaders
。Class<?>[]
返回一个Class
对象数组,指示哪些类型的对象可以用作作者的setOutput
方法的参数。boolean
如果此编写器输出的格式精确地保留像素数据,则返回true
。boolean
isOwnWriter
(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
- 供应商名称,作为非null
String
。version
- 版本标识符,作为非null
String
。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 }
。