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