java.lang.Objectjavax.imageio.spi.IIOServiceProvider
javax.imageio.spi.ImageReaderWriterSpi
javax.imageio.spi.ImageWriterSpi
public abstract class ImageWriterSpi
用于 ImageWriter 的服务提供者接口 (SPI)。有关服务提供者类的更多信息,请参见 IIORegistry 类的注释。
每个 ImageWriterSpi 都提供了有关与之关联的 ImageWriter 类的几种类型的信息。
使用 getVendorName、getDescription 和 getVersion 方法可获得定义 SPI 类和此类简明描述的供应商的名称。可将这些方法进行国际化,以提供特对于语言环境的输出。这些方法主要用于提供可用于组织弹出菜单或其他列表的简短可写信息。
使用 getFormatNames、getFileSuffixes 和 getMIMEType 方法可获得与服务有关联的格式名称、文件后缀和 MIME 类型的列表。使用这些方法可识别候选 ImageWriter,从而基于手动格式选择、文件命名或 MIME 关联写入特定文件或流。
canEncodeImage 方法提供了确定最有可能解析特定数据流的 ImageWriter 的更可靠途径。此方法允许服务提供者检查实际的图像内容。
最后,通过调用 createWriterInstance 方法,可获得与此服务提供者关联的 ImageWriter 类的实例。任何重量级的初始化,例如加载本地库或创建大的表,都应推迟,至少应该推迟到完成此方法的第一次调用。
IIORegistry,
ImageTypeSpecifier,
ImageWriter
| 字段摘要 | |
|---|---|
protected Class[] |
outputTypes 将从 getOutputTypes 返回的 Class 对象的数组,该数组最初为 null。 |
protected String[] |
readerSpiNames 将从 getImageReaderSpiNames 返回的字符串数组,该数组最初为 null。 |
static Class[] |
STANDARD_OUTPUT_TYPE 从 getInputTypes 返回的单元素数组,该数组最初包含 ImageInputStream.class。 |
| 从类 javax.imageio.spi.IIOServiceProvider 继承的字段 |
|---|
vendorName, version |
| 构造方法摘要 | |
|---|---|
protected |
ImageWriterSpi() 构造一个空的 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。 |
| 方法摘要 | |
|---|---|
abstract boolean |
canEncodeImage(ImageTypeSpecifier type) 如果与此服务提供者关联的 ImageWriter 实现能够使用给定的布局编码图像,则返回 true。 |
boolean |
canEncodeImage(RenderedImage im) 如果与此服务提供者关联的 ImageWriter 实现能够编码给定的 RenderedImage 实例,则返回 true。 |
ImageWriter |
createWriterInstance() 返回与此服务提供者关联的 ImageWriter 实现的实例。 |
abstract ImageWriter |
createWriterInstance(Object extension) 返回与此服务提供者关联的 ImageWriter 实现的实例。 |
String[] |
getImageReaderSpiNames() 返回一个 String 数组,该数组包含所有能够理解由与此服务提供者关联的 ImageWriter 使用的内部元数据表示形式的 ImageReaderSpi 类的完全限定名。 |
Class[] |
getOutputTypes() 返回 Class 对象数组,指示可用作 setOutput 方法参数的对象类型。 |
boolean |
isFormatLossless() 如果此 writer 输出的格式准确保留了像素数据位,则返回 true。 |
boolean |
isOwnWriter(ImageWriter writer) 如果传入的 ImageWriter 对象是与此服务提供者关联的 ImageWriter 的实例,则返回 true。 |
| 从类 javax.imageio.spi.IIOServiceProvider 继承的方法 |
|---|
getDescription, getVendorName, getVersion, onDeregistration, onRegistration |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 字段详细信息 |
|---|
public static final Class[] STANDARD_OUTPUT_TYPE
getInputTypes 返回的单元素数组,该数组最初包含
ImageInputStream.class。
protected Class[] outputTypes
getOutputTypes 返回的
Class 对象的数组,该数组最初为
null。
protected String[] readerSpiNames
getImageReaderSpiNames 返回的字符串数组,该数组最初为
null。
| 构造方法详细信息 |
|---|
protected 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 - 指示格式的 MIME 类型的
String 数组。如果没有定义后缀,则应指定为
null。长度为 0 的数组将被标准化为
null。
writerClassName - 所关联的
ImageWriterSpi 类的完全限定名,它为一个非
null 的
String。
outputTypes - 指示合法的输出类型的长度至少为 1 的
Class 对象的数组。
readerSpiNames - 命名所有与
ImageReader 关联的类的长度至少为 1 的
String 数组,或者为
null。长度为 0 的数组将被标准化为
null。
supportsStandardStreamMetadataFormat - 一个
boolean 值,指示流元数据对象是否可使用由标准元数据格式描述的树。
nativeStreamMetadataFormatName - 从
getNativeStreamMetadataFormatName 返回的一个
String,或者为
null。
nativeStreamMetadataFormatClassName - 将用于实例化从
getNativeStreamMetadataFormat 返回的元数据格式对象的
String,或者为
null。
extraStreamMetadataFormatNames - 从
getExtraStreamMetadataFormatNames 返回的
String 数组,或者为
null。长度为 0 的数组将被标准化为
null。
extraStreamMetadataFormatClassNames - 用于实例化从
getStreamMetadataFormat 返回的元数据格式对象的
String 数组,或者为
null。长度为 0 的数组将被标准化为
null。
supportsStandardImageMetadataFormat - 一个
boolean 值,指示图像元数据对象是否可使用由标准元数据格式描述的树。
nativeImageMetadataFormatName - 从
getNativeImageMetadataFormatName 返回的一个
String,或者为
null。
nativeImageMetadataFormatClassName - 用于实例化从
getNativeImageMetadataFormat 返回的元数据格式对象的
String,或者为
null。
extraImageMetadataFormatNames - 从
getExtraImageMetadataFormatNames 返回的
String 数组。长度为 0 的数组将被标准化为
null。
extraImageMetadataFormatClassNames - 用于实例化从
getImageMetadataFormat 返回的元数据格式对象的
String 数组,或者为
null。长度为 0 的数组将被标准化为
null。
IllegalArgumentException - 如果
vendorName 为
null。
IllegalArgumentException - 如果
version 为
null。
IllegalArgumentException - 如果
names 为
null 或长度为 0。
IllegalArgumentException - 如果
writerClassName 为
null。
IllegalArgumentException - 如果
outputTypes 为
null 或长度为 0。
| 方法详细信息 |
|---|
public boolean isFormatLossless()
true。默认实现返回
true。
true。
public Class[] getOutputTypes()
Class 对象数组,指示可用作
setOutput 方法参数的对象类型。
对于大多数只输出到 ImageOutputStream 的 writer,应返回一个包含 ImageOutputStream.class 的单元素数组。
null 的
Class 对象数组。
public abstract boolean canEncodeImage(ImageTypeSpecifier type)
ImageWriter 实现能够使用给定的布局编码图像,则返回
true。布局(
即 图像的
SampleModel 和
ColorModel)由
ImageTypeSpecifier 对象描述。
返回的值为 true 并不能绝对保证成功地编码;编码过程中仍有可能因为类似 I/O 错误、不一致或错误的数据结构等而产生错误。执行对图像的基本结构的合理检查是为了确定图像是否处在编码格式范围内。例如,如果要求一个只能编码灰度格式的服务提供者处理 RGB BufferedImage,将返回 false。类似地,能够编码 8 位 RGB 图像格式的服务提供者可能拒绝编码与 alpha 通道关联的图像。
不同的 ImageWriter 以及由此导致的不同的服务提供者,可以更严格或更松散。例如,即使为了存储而不得不减少每个图像的像素,从而使精度下降,也有可能接受预乘 alpha 的图像。
type - 指定将要写入的图像的布局的
ImageTypeSpecifier。
true。
IllegalArgumentException - 如果
type 为
null。
public boolean canEncodeImage(RenderedImage im)
ImageWriter 实现能够编码给定的
RenderedImage 实例,则返回
true。注意,这包括
java.awt.image.BufferedImage 的实例。
有关此方法的语义信息,请参见对 canEncodeImage(ImageTypeSpecifier) 的讨论。
im - 要编码的
RenderedImage 的实例。
true。
IllegalArgumentException - 如果
im 为
null。
public ImageWriter createWriterInstance() throws IOException
ImageWriter 实现的实例。返回的对象最初处于初始状态,就像是调用过其
reset 方法。
默认实现只返回 createWriterInstance(null)。
ImageWriter 实例。
IOException - 如果加载或初始化 writer 类时发生错误,或在实例化或初始化 writer 对象时发生错误。
public abstract ImageWriter createWriterInstance(Object extension) throws IOException
ImageWriter 实现的实例。返回的对象最初处于初始状态,就像是调用过其
reset 方法。
可以在构造时向插件提供 Object。对象的本质完全由插件决定。
通常情况下,插件将使用类似 return new MyImageWriter(this) 的代码来实现此方法。
extension - 特定于插件的扩展对象,该对象可为
null。
ImageWriter 实例。
IOException - 如果实例化此 writer 的尝试失败。
IllegalArgumentException - 如果
ImageWriter 的构造方法抛出一个
IllegalArgumentException 指示此扩展对象不适合在这里使用。
public boolean isOwnWriter(ImageWriter writer)
ImageWriter 对象是与此服务提供者关联的
ImageWriter 的实例,则返回
true。
writer - 一个
ImageWriter 实例。
writer 可识别,则返回
true。
IllegalArgumentException - 如果
writer 为
null。
public String[] getImageReaderSpiNames()
String 数组,该数组包含所有能够理解由与此服务提供者关联的
ImageWriter 使用的内部元数据表示形式的
ImageReaderSpi 类的完全限定名。如果没有指定这样的
ImageReaders,则返回
null。如果返回了非
null 的值,则其长度一定不能为零。
数组中的第一项必须是“首选”reader 的服务提供者的名称,因为它将用于实例化由 ImageIO.getImageReader(ImageWriter) 返回的 ImageReader。
此机制可用于获取将以 ImageWriter 能够理解的结构生成非像素元数据的 ImageReaders(请参见 IIOExtraDataInfo)。通过读取此图像并从使用此方法获取的 ImageReaders 之一获取此数据并将其传给 ImageWriter,客户端程序可读取图像、进行某些修改并写回图像,同时保留所有的元数据,而不需要理解有关此元数据内部结构的任何事情,甚至图像的格式也不需知道。
ImageReaderSpi 名称的
String 数组,或者返回
null。
ImageIO.getImageReader(ImageWriter),
ImageReaderSpi.getImageWriterSpiNames()