- java.lang.Object
-
- javax.imageio.spi.IIOServiceProvider
-
- javax.imageio.spi.ImageReaderWriterSpi
-
- javax.imageio.spi.ImageWriterSpi
-
- 实现的所有接口
-
RegisterableService
public abstract class ImageWriterSpiextends ImageReaderWriterSpi
ImageWriter
的服务提供者接口(SPI)。 有关服务提供程序类的详细信息,请参阅IIORegistry
类的类注释。每个
ImageWriterSpi
提供了与其关联的ImageWriter
类的几种类型的信息。谁定义的SPI类和类的简要描述的供应商的名称都可以通过现有
getVendorName
,getDescription
和getVersion
方法。 这些方法可以国际化以提供特定于语言环境的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的人类可写信息。可以通过
getFileSuffixes
和getMIMEType
方法获得与服务相关联的格式名称,文件后缀和MIME类型的getFormatNames
。 这些方法可用于识别候选ImageWriter
用于基于手动格式选择,文件命名或MIME关联来编写特定文件或流。canEncodeImage
方法提供了一种更可靠的方法来确定哪些ImageWriter
可能能够解析特定数据流。 此方法允许服务提供商检查实际图像内容。最后,可以通过调用
createWriterInstance
方法获得与此服务提供者关联的ImageWriter
类的实例。 任何重量级初始化(例如加载本机库或创建大型表)都应该至少延迟到第一次调用此方法为止。- 另请参见:
-
IIORegistry
,ImageTypeSpecifier
,ImageWriter
-
-
字段汇总
字段 变量和类型 字段 描述 protected 类<?>[]
outputTypes
从getOutputTypes
返回的类
对象的数组,最初为null
。protected String[]
readerSpiNames
从getImageReaderSpiNames
返回的字符串数组,最初为null
。static 类<?>[]
STANDARD_OUTPUT_TYPE
已过时。而不是使用此字段,直接创建等效数组{ ImageOutputStream.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
。ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, 类<?>[] 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
canEncodeImage(RenderedImage im)
返回true
如果ImageWriter
与此服务提供者关联实现能够编码给定的RenderedImage
实例。abstract boolean
canEncodeImage(ImageTypeSpecifier type)
如果与此服务提供者关联的ImageWriter
实现能够使用给定布局对图像进行编码,则返回true
。ImageWriter
createWriterInstance()
返回与此服务提供者关联的ImageWriter
实现的实例。abstract ImageWriter
createWriterInstance(Object extension)
返回与此服务提供者关联的ImageWriter
实现的实例。String[]
getImageReaderSpiNames()
返回包含所有ImageReaderSpi
类的所有完全限定名称的String
数组,String
类可以理解与此服务提供者关联的ImageWriter
使用的内部元数据表示形式,如果没有指定null
则ImageReaders
。类<?>[]
getOutputTypes()
返回一个类
对象的数组,指示可以将哪些类型的对象用作writersetOutput
方法的参数。boolean
isFormatLossless()
如果此true
器输出的格式精确地保留像素数据,则返回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
@Deprecatedpublic static final 类<?>[] STANDARD_OUTPUT_TYPE
Deprecated.Instead of using this field, directly create the equivalent array{ ImageOutputStream.class }
.最初包含ImageOutputStream.class
单元素数组,从getOutputTypes
返回。
-
outputTypes
protected 类<?>[] outputTypes
要从getOutputTypes
返回的类
对象的数组,最初为null
。
-
readerSpiNames
protected String[] readerSpiNames
从getImageReaderSpiNames
返回的字符串数组,最初为null
。
-
-
构造方法详细信息
-
ImageWriterSpi
protected ImageWriterSpi()
构造一个空白ImageWriterSpi
。 由子类来初始化实例变量和/或覆盖方法实现,以便提供所有方法的工作版本。
-
ImageWriterSpi
public ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, 类<?>[] 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
指示格式名称的String
。 必须至少有一个条目。 -
suffixes
-的阵列String
指示常用文件后缀。 如果未定义后缀,则应提供null
。 长度为0的数组将标准化为null
。 -
MIMETypes
- 指示格式的MIME类型的String
数组。 如果未定义后缀,则应提供null
。 长度为0的数组将标准化为null
。 -
writerClassName
- 关联的ImageWriterSpi
类的完全限定名称,作为非null String
。 -
outputTypes
- 长度至少为1的类
对象的数组,指示合法的输出类型。 -
readerSpiNames
- 长度至少为1的数组String
,命名所有关联的类的ImageReader
或null
。 长度为0的数组规范化为null
。 -
supportsStandardStreamMetadataFormat
-boolean
,指示流元数据对象是否可以使用标准元数据格式描述的树。 -
nativeStreamMetadataFormatName
-String
或null
,将从getNativeStreamMetadataFormatName
返回。 -
nativeStreamMetadataFormatClassName
-String
或null
,用于实例化要从getNativeStreamMetadataFormat
返回的元数据格式对象。 -
extraStreamMetadataFormatNames
-的阵列String
S或null
从返回,getExtraStreamMetadataFormatNames
。 长度为0的数组规范化为null
。 -
extraStreamMetadataFormatClassNames
- 一个String
s或null
的数组,用于实例化从getStreamMetadataFormat
返回的元数据格式对象。 长度为0的数组标准化为null
。 -
supportsStandardImageMetadataFormat
-boolean
,指示图像元数据对象是否可以使用标准元数据格式描述的树。 -
nativeImageMetadataFormatName
-一个String
,或null
,从返回getNativeImageMetadataFormatName
。 -
nativeImageMetadataFormatClassName
-String
或null
,用于实例化要从getNativeImageMetadataFormat
返回的元数据格式对象。 -
extraImageMetadataFormatNames
-的阵列String
从返回小号getExtraImageMetadataFormatNames
。 长度为0的数组规范化为null
。 -
extraImageMetadataFormatClassNames
- 一个String
s或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
。- 结果
-
true
如果格式保留完整的像素精度。
-
getOutputTypes
public 类<?>[] getOutputTypes()
返回一个类
对象的数组,指示可以将哪些类型的对象用作writersetOutput
方法的参数。对于大多数仅输出到
ImageOutputStream
,应返回包含ImageOutputStream.class
的单元素数组。- 结果
- 非长度为
类
的非null
数组,长度至少为1。
-
canEncodeImage
public abstract boolean canEncodeImage(ImageTypeSpecifier type)
如果与此服务提供者关联的ImageWriter
实现能够使用给定布局对图像进行编码,则返回true
。 布局( 即图像的SampleModel
和ColorModel
)由ImageTypeSpecifier
对象描述。返回值
true
不是成功编码的绝对保证; 由于诸如I / O错误,数据结构不一致或格式错误等因素,编码过程仍可能产生错误。目的是对图像的基本结构进行合理检查,以确定它是否在编码格式的范围。 例如,对于格式的服务提供商,只能编码灰度将返回false
如果交给一个RGBBufferedImage
。 类似地,可以编码8位RGB图像的格式的服务提供商可能拒绝使用关联的Alpha通道对图像进行编码。不同的
ImageWriter
,以及服务提供商,可能会选择或多或少严格。 例如,他们可能会接受具有预乘alpha的图像,即使它必须从每个像素中分割出来,但是会有一些精度损失,以便进行存储。- 参数
-
type
- 一个ImageTypeSpecifier
指定要写入的图像的布局。 - 结果
-
true
如果此编写者可能能够使用给定布局对图像进行编码。 - 异常
-
IllegalArgumentException
- 如果type
是null
。
-
canEncodeImage
public boolean canEncodeImage(RenderedImage im)
返回true
如果ImageWriter
与此服务提供者关联实现能够编码给定的RenderedImage
实例。 请注意,这包括java.awt.image.BufferedImage
实例。有关此方法语义的信息,请参阅
canEncodeImage(ImageTypeSpecifier)
的讨论。- 参数
-
im
- 要编码的RenderedImage
的实例。 - 结果
-
true
如果此编写者可能能够对此图像进行编码。 - 异常
-
IllegalArgumentException
- 如果im
是null
。
-
createWriterInstance
public ImageWriter createWriterInstance() throws IOException
返回与此服务提供者关联的ImageWriter
实现的实例。 返回的对象最初将处于初始状态,就像调用了它的reset
方法一样。默认实现只返回
createWriterInstance(null)
。- 结果
- 一个
ImageWriter
实例。 - 异常
-
IOException
- 如果在加载或初始化writer类期间或在IOException
器对象的实例化或初始化期间发生错误。
-
createWriterInstance
public abstract ImageWriter createWriterInstance(Object extension) throws IOException
返回与此服务提供者关联的ImageWriter
实现的实例。 返回的对象最初将处于初始状态,就像调用了它的reset
方法一样。可以在构建时向插件提供
Object
。 对象的性质完全是插件特定的。通常,插件将使用诸如
return new MyImageWriter(this)
代码实现此方法。- 参数
-
extension
- 特定于插件的扩展对象,可能是null
。 - 结果
- 一个
ImageWriter
实例。 - 异常
-
IOException
- 如果尝试实例化IOException
失败。 -
IllegalArgumentException
- 如果ImageWriter
的构造函数抛出IllegalArgumentException
以指示扩展对象不适合。
-
isOwnWriter
public boolean isOwnWriter(ImageWriter writer)
如果传入的ImageWriter
对象是与此服务提供者关联的ImageWriter
的实例,则返回true
。- 参数
-
writer
-ImageWriter
实例。 - 结果
-
true
如果识别出writer
- 异常
-
IllegalArgumentException
- 如果writer
是null
。
-
getImageReaderSpiNames
public String[] getImageReaderSpiNames()
返回的数组String
包含所有的所有的完全合格的名称小号ImageReaderSpi
类,可以理解由所使用的内部元数据表示ImageWriter
与此服务提供商相关联,或null
如果没有这样ImageReaders
指定。 如果返回非null
值,则其长度必须为非零。数组中的第一项必须是“首选”阅读器的服务提供程序的名称,因为它将用于实例化
ImageReader
返回的ImageIO.getImageReader(ImageWriter)
。该机制可用于获得
ImageReaders
,其将在由ImageWriter
理解的结构中生成非像素元数据(参见IIOExtraDataInfo
)。 通过读取图像并从使用此方法获得的ImageReaders
之一获取此数据并将其传递给ImageWriter
,客户端程序可以读取图像,以某种方式对其进行修改,并将其写回保留所有元数据,无需了解元数据的内部结构,甚至图像格式。- 结果
- 长度至少为1的
String
数组,包含ImageReaderSpi
s或null
。 - 另请参见:
-
ImageIO.getImageReader(ImageWriter)
,ImageReaderSpi.getImageWriterSpiNames()
-
-