- 所有已实现的接口:
-
RegisterableService
ImageWriter
的服务提供者接口(SPI)。有关服务提供者类的更多信息,请参阅IIORegistry
类的类注释。
每个ImageWriterSpi
通过getVendorName
、getDescription
和getVersion
方法提供与其关联的ImageWriter
类的有关信息。这些方法可以国际化以提供特定于区域设置的输出。这些方法主要用于提供可用于组织弹出菜单或其他列表的简短、人类可读的信息。
通过getFormatNames
、getFileSuffixes
和getMIMEType
方法可以获取与服务关联的格式名称、文件后缀和MIME类型的列表。这些方法可用于根据手动格式选择、文件命名或MIME关联来识别用于写入特定文件或流的候选ImageWriter
。
通过canEncodeImage
方法提供了一种更可靠的方法来确定哪些ImageWriter
可能能够解析特定数据流。此方法允许服务提供者检查实际的图像内容。
最后,可以通过调用createWriterInstance
方法来获取与此服务提供者关联的ImageWriter
类的实例。任何繁重的初始化,如加载本机库或创建大型表,都应至少推迟到第一次调用此方法时。
- 参见:
-
Field Summary
Modifier 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, supportsStandardStreamMetadataFormat
Fields declared in class javax.imageio.spi.IIOServiceProvider
vendorName, version
-
Constructor Summary
ModifierConstructorDescriptionprotected
构造一个空白的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 ImageWriter
createWriterInstance
(Object extension) 返回与此服务提供者关联的ImageWriter
实现的实例。String[]
返回一个包含所有ImageReaderSpi
类的完全限定名称的String
数组,这些类可以理解与此服务提供者关联的ImageWriter
使用的内部元数据表示,如果没有指定这样的ImageReader
,则返回null
。Class<?>[]
返回一个Class
对象数组,指示可以用作写入器的setOutput
方法的参数类型。boolean
如果此写入器输出的格式保留像素数据的位精确度,则返回true
。boolean
isOwnWriter
(ImageWriter writer) 如果传入的ImageWriter
对象是与此服务提供者关联的ImageWriter
的实例,则返回true
。Methods declared in class javax.imageio.spi.ImageReaderWriterSpi
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
Methods 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 }
。