IIOMetadataNode
对象树。这些树的格式取决于插件,但插件可以选择支持下面描述的插件中立格式。单个插件可以支持多个元数据格式,这些格式的名称可以通过调用getMetadataFormatNames
来确定。插件还可以支持一种特殊格式,称为“本机”格式,旨在无损编码其元数据。该格式通常专门设计用于与特定文件格式一起工作,以便图像可以在相同格式中加载和保存而不丢失元数据,但可能不太适用于在不同图像格式的ImageReader
和ImageWriter
之间传输元数据。要在两种本机格式之间进行尽可能无损地转换,必须使用ImageTranscoder
对象。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected IIOMetadataController
将在调用activateController
方法时用于为此IIOMetadata
对象提供设置的IIOMetadataController
。protected IIOMetadataController
建议用作此IIOMetadata
对象控制器的IIOMetadataController
。protected String[]
一个类名数组,表示由此插件支持的元数据格式的类名,除了标准和本机格式之外,初始化为null
并通过构造函数设置。protected String[]
一个格式名称数组,表示由此插件支持的格式,除了标准和本机格式之外,初始化为null
并通过构造函数设置。protected String
表示本机元数据格式的IIOMetadataFormat
类名,初始化为null
并通过构造函数设置。protected String
此对象的本机元数据格式的名称,初始化为null
并通过构造函数设置。protected boolean
一个布尔值,指示具体子类是否支持标准元数据格式,通过构造函数设置。 -
Constructor Summary
ModifierConstructorDescriptionprotected
构造一个空的IIOMetadata
对象。protected
IIOMetadata
(boolean standardMetadataFormatSupported, String nativeMetadataFormatName, String nativeMetadataFormatClassName, String[] extraMetadataFormatNames, String[] extraMetadataFormatClassNames) 构造一个IIOMetadata
对象,具有给定的格式名称和格式类名,以及指示是否支持标准格式的布尔值。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
激活此IIOMetadata
对象的安装IIOMetadataController
并返回结果值。abstract Node
返回一个XML DOMNode
对象,表示根据给定元数据格式定义的约定,此对象中包含的元数据树的根。返回当前安装的IIOMetadataController
。返回默认的IIOMetadataController
,如果有的话,而不管当前安装的控制器是什么。String[]
返回一个包含其他元数据格式名称的String
数组,除了本机和标准格式之外,由此插件的getAsTree
、setFromTree
和mergeTree
方法识别。getMetadataFormat
(String formatName) 返回描述给定元数据格式的IIOMetadataFormat
对象,如果没有可用的描述,则返回null
。String[]
返回一个包含所有元数据格式名称的String
数组,包括插件的getAsTree
、setFromTree
和mergeTree
方法识别的本机和标准格式。返回此插件的“本机”元数据格式的名称,通常允许以无损方式编码和传输由此插件处理的格式中存储的元数据。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的色度信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的压缩信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的数据格式信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的尺寸信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的文档信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的文本信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的平铺信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected IIOMetadataNode
返回表示标准javax_imageio_1.0
元数据格式的透明度信息的IIOMetadataNode
,如果没有此类信息,则返回null
。protected final IIOMetadataNode
一个实用方法,返回一个IIOMetadataNode
树,表示根据标准javax_imageio_1.0
元数据格式的约定,此对象中包含的元数据。boolean
如果为此IIOMetadata
对象安装了控制器,则返回true
。abstract boolean
如果此对象不支持mergeTree
、setFromTree
和reset
方法,则返回true
。boolean
如果标准元数据格式受getMetadataFormat
、getAsTree
、setFromTree
和mergeTree
支持,则返回true
。abstract void
根据给定的元数据格式,从定义的XML DOMNode
树中的树改变此IIOMetadata
对象的内部状态。abstract void
reset()
将此对象中存储的所有数据重置为默认值,通常是在构造后立即处于的状态,尽管确切的语义是特定于插件的。void
setController
(IIOMetadataController controller) 设置用于在调用activateController
方法时为此IIOMetadata
对象提供设置的IIOMetadataController
,覆盖任何默认控制器。void
setFromTree
(String formatName, Node root) 根据给定的元数据格式,从定义的XML DOMNode
树中设置此IIOMetadata
对象的内部状态。
-
Field Details
-
standardFormatSupported
protected boolean standardFormatSupported一个布尔值,指示具体子类是否支持标准元数据格式,通过构造函数设置。 -
nativeMetadataFormatName
此对象的本机元数据格式的名称,初始化为null
并通过构造函数设置。 -
nativeMetadataFormatClassName
表示本机元数据格式的IIOMetadataFormat
类名,初始化为null
并通过构造函数设置。 -
extraMetadataFormatNames
一个格式名称数组,表示由此插件支持的格式,除了标准和本机格式之外,初始化为null
并通过构造函数设置。 -
extraMetadataFormatClassNames
一个类名数组,表示由此插件支持的元数据格式的类名,除了标准和本机格式之外,初始化为null
并通过构造函数设置。 -
defaultController
建议用作此IIOMetadata
对象控制器的IIOMetadataController
。可以通过getDefaultController
检索此实例变量。要安装默认控制器,请调用setController(getDefaultController())
。应该由选择提供自己默认控制器的子类设置此实例变量,通常是用于设置参数的GUI。- 参见:
-
controller
将在调用activateController
方法时用于为此IIOMetadata
对象提供设置的IIOMetadataController
。即使null
,此值也会覆盖任何默认控制器。- 参见:
-
-
Constructor Details
-
IIOMetadata
protected IIOMetadata()构造一个空的IIOMetadata
对象。子类负责为所有受保护的实例变量提供值,以使任何未被覆盖的默认方法实现能够满足其契约。例如,extraMetadataFormatNames
不应该长度为0。 -
IIOMetadata
protected IIOMetadata(boolean standardMetadataFormatSupported, String nativeMetadataFormatName, String nativeMetadataFormatClassName, String[] extraMetadataFormatNames, String[] extraMetadataFormatClassNames) 使用给定的格式名称和格式类名称构造一个IIOMetadata
对象,以及一个布尔值指示是否支持标准格式。此构造函数不会尝试检查类名的有效性。无效的类名可能会导致对
getMetadataFormat
的后续调用引发异常。- 参数:
-
standardMetadataFormatSupported
- 如果此对象可以使用标准元数据格式返回或接受DOM树,则为true
。 -
nativeMetadataFormatName
- 本机元数据格式的名称,作为String
,如果没有本机格式,则为null
。 -
nativeMetadataFormatClassName
- 本机元数据格式的类名,如果没有本机格式,则为null
。 -
extraMetadataFormatNames
- 一个String
数组,指示此对象支持的其他格式,如果没有,则为null
。 -
extraMetadataFormatClassNames
- 一个String
数组,指示此对象支持的任何其他格式的类名,如果没有,则为null
。 - 抛出:
-
IllegalArgumentException
- 如果extraMetadataFormatNames
长度为0。 -
IllegalArgumentException
- 如果extraMetadataFormatNames
和extraMetadataFormatClassNames
既不是null
,也不是相同长度。
-
-
Method Details
-
isStandardMetadataFormatSupported
public boolean isStandardMetadataFormatSupported()如果getMetadataFormat
,getAsTree
,setFromTree
和mergeTree
支持标准元数据格式,则返回true
。默认实现返回
standardFormatSupported
实例变量的值。- 返回:
-
如果支持标准元数据格式,则返回
true
。 - 参见:
-
isReadOnly
public abstract boolean isReadOnly()如果此对象不支持mergeTree
,setFromTree
和reset
方法,则返回true
。- 返回:
-
如果此
IIOMetadata
对象无法修改,则返回true。
-
getNativeMetadataFormatName
返回此插件的“本机”元数据格式的名称,该格式通常允许对由此插件处理的格式中存储的元数据进行无损编码和传输。如果不支持此类格式,则将返回null
。“本机”元数据格式的结构和内容由创建此
IIOMetadata
对象的插件定义。简单格式的插件通常会为根节点创建一个虚拟节点,然后创建一系列表示单个标记、块或关键字/值对的子节点。插件可以选择是否记录其本机格式。默认实现返回
nativeMetadataFormatName
实例变量的值。- 返回:
-
本机格式的名称,或
null
。 - 参见:
-
getExtraMetadataFormatNames
返回一个包含除本机和标准格式之外,由此插件的getAsTree
,setFromTree
和mergeTree
方法识别的其他元数据格式的名称的String
数组。如果没有这样的附加格式,则返回null
。默认实现返回
extraMetadataFormatNames
实例变量的克隆。- 返回:
-
至少长度为1的
String
数组,或null
。 - 参见:
-
getMetadataFormatNames
返回一个包含所有元数据格式的名称的String
数组,包括本机和标准格式,由此插件的getAsTree
,setFromTree
和mergeTree
方法识别。如果没有这样的格式,则返回null
。默认实现调用
getNativeMetadataFormatName
,isStandardMetadataFormatSupported
和getExtraMetadataFormatNames
,并返回组合的结果。- 返回:
-
一个
String
数组。 - 参见:
-
getMetadataFormat
返回描述给定元数据格式的IIOMetadataFormat
对象,如果没有可用的描述,则返回null
。提供的名称必须是getMetadataFormatNames
返回的名称之一(即本机格式名称、标准格式名称或getExtraMetadataFormatNames
返回的名称之一)。默认实现检查名称是否与全局标准元数据格式名称匹配,并在支持时返回该格式。否则,它会检查本机格式名称,然后是任何其他格式名称。如果找到匹配项,它将从
nativeMetadataFormatClassName
或extraMetadataFormatClassNames
中检索IIOMetadataFormat
类的名称,并使用其getInstance
方法构造该类的实例。- 参数:
-
formatName
- 所需的元数据格式。 - 返回:
-
一个
IIOMetadataFormat
对象。 - 抛出:
-
IllegalArgumentException
- 如果formatName
为null
或不是插件识别的名称之一。 -
IllegalStateException
- 如果无法加载与格式名称对应的类。
-
getAsTree
返回一个表示根据给定元数据格式定义的语法包含在此对象中的元数据树的根的XML DOMNode
对象。可查询可用元数据格式的名称使用
getMetadataFormatNames
方法。- 参数:
-
formatName
- 所需的元数据格式。 - 返回:
-
一个形成树根的XML DOM
Node
对象。 - 抛出:
-
IllegalArgumentException
- 如果formatName
为null
或不是getMetadataFormatNames
返回的名称之一。 - 参见:
-
mergeTree
根据给定元数据格式定义的语法,从XML DOMNode
树中的树更改此IIOMetadata
对象的内部状态。仅根据需要更改先前状态以适应给定树中存在的节点。如果树的结构或内容无效,则将抛出IIOInvalidTreeException
。由于如何合并树或子树与另一个树的语义完全是特定于格式的,因此插件作者可以以适合格式的任何方式实现此方法,包括简单地用给定树的内容替换所有现有状态。
- 参数:
-
formatName
- 所需的元数据格式。 -
root
- 一个XML DOMNode
对象,形成树的根。 - 抛出:
-
IllegalStateException
- 如果此对象是只读的。 -
IllegalArgumentException
- 如果formatName
为null
或不是getMetadataFormatNames
返回的名称之一。 -
IllegalArgumentException
- 如果root
为null
。 -
IIOInvalidTreeException
- 如果树无法成功使用给定格式的规则解析。 - 参见:
-
getStandardChromaNode
返回一个代表标准javax_imageio_1.0
元数据格式的色度信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardCompressionNode
返回一个代表标准javax_imageio_1.0
元数据格式的压缩信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardDataNode
返回一个代表标准javax_imageio_1.0
元数据格式的数据格式信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardDimensionNode
返回一个代表标准javax_imageio_1.0
元数据格式的尺寸信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardDocumentNode
返回一个代表标准javax_imageio_1.0
元数据格式的文档信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardTextNode
返回一个代表标准javax_imageio_1.0
元数据格式的文本信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardTileNode
返回一个代表标准javax_imageio_1.0
元数据格式的平铺信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。 - 参见:
-
getStandardTransparencyNode
返回一个代表标准javax_imageio_1.0
元数据格式的透明度信息的IIOMetadataNode
,如果没有此类信息可用,则返回null
。此方法旨在由实用程序例程getStandardTree
调用。默认实现返回
null
。子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。
- 返回:
-
一个
IIOMetadataNode
,或null
。
-
getStandardTree
一个实用方法,返回一个IIOMetadataNode
树,表示根据标准javax_imageio_1.0
元数据格式的约定包含在此对象中的元数据。此方法调用各种
getStandard*Node
方法,以提供根节点的子节点根的每个子树。如果其中任何方法返回null
,则相应的子树将被省略。如果它们全部返回null
,则将返回由单个根节点组成的树。- 返回:
-
一个
IIOMetadataNode
,表示javax_imageio_1.0
格式中元数据树的根。 - 参见:
-
setFromTree
从一个由给定元数据格式定义语法的XML DOMNode
树中设置此IIOMetadata
对象的内部状态。之前的状态将被丢弃。如果树的结构或内容无效,将抛出IIOInvalidTreeException
。默认实现调用
reset
,然后调用mergeTree(formatName, root)
。- 参数:
-
formatName
- 所需的元数据格式。 -
root
- 一个XML DOMNode
对象,形成树的根。 - 抛出:
-
IllegalStateException
- 如果此对象是只读的。 -
IllegalArgumentException
- 如果formatName
为null
或不是getMetadataFormatNames
返回的名称之一。 -
IllegalArgumentException
- 如果root
为null
。 -
IIOInvalidTreeException
- 如果树无法成功使用给定格式的规则解析。 - 参见:
-
reset
public abstract void reset()重置此对象中存储的所有数据为默认值,通常是此对象在构造后立即处于的状态,尽管确切的语义是特定于插件的。请注意,有许多可能的默认值,取决于对象的创建方式。- 抛出:
-
IllegalStateException
- 如果此对象是只读的。 - 参见:
-
setController
设置IIOMetadata
对象在调用activateController
方法时用于提供设置的IIOMetadataController
,覆盖任何默认控制器。如果参数为null
,则不会使用任何控制器,包括任何默认控制器。要恢复默认设置,请使用setController(getDefaultController())
。默认实现将
controller
实例变量设置为提供的值。- 参数:
-
controller
- 适当的IIOMetadataController
,或null
。 - 参见:
-
getController
返回当前安装的IIOMetadataController
。如果有默认控制器,则可能是默认控制器,null
,或者是最近一次调用setController
的参数。默认实现返回
controller
实例变量的值。- 返回:
-
当前安装的
IIOMetadataController
,或null
。 - 参见:
-
getDefaultController
返回默认的IIOMetadataController
,如果有的话,而不管当前安装的控制器是什么。如果没有默认控制器,则返回null
。默认实现返回
defaultController
实例变量的值。- 返回:
-
默认的
IIOMetadataController
,或null
。 - 参见:
-
hasController
public boolean hasController()如果为此IIOMetadata
对象安装了控制器,则返回true
。默认实现在
getController
方法返回非null
值时返回true
。- 返回:
-
如果安装了控制器,则返回
true
。 - 参见:
-
activateController
public boolean activateController()激活此IIOMetadata
对象的安装的IIOMetadataController
,并返回结果值。当此方法返回true
时,此IIOMetadata
对象的所有值将准备好进行下一次写操作。如果返回false
,则此对象中的任何设置都不会被更改(即,用户取消了操作)。通常,控制器将是为特定插件的
IIOMetadata
子类提供用户界面的GUI。但是,控制器不一定是GUI。默认实现调用
getController
,如果hasController
返回true
,则调用返回对象上的activate
。- 返回:
-
如果控制器正常完成,则返回
true
。 - 抛出:
-
IllegalStateException
- 如果当前没有安装控制器。 - 参见:
-