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