- java.lang.Object
-
- javax.imageio.metadata.IIOMetadata
-
public abstract class IIOMetadata extends 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)
,ImageWriter.convertImageMetadata(javax.imageio.metadata.IIOMetadata, javax.imageio.ImageTypeSpecifier, javax.imageio.ImageWriteParam)
,ImageWriter.convertStreamMetadata(javax.imageio.metadata.IIOMetadata, javax.imageio.ImageWriteParam)
,IIOImage
,ImageTranscoder
-
-
Field Summary
Fields Modifier and Type Field 描述 protected IIOMetadataController
controller
该IIOMetadataController
将用于提供此设置IIOMetadata
对象时activateController
方法被调用。protected IIOMetadataController
defaultController
一个IIOMetadataController
被建议用作控制器此IIOMetadata
对象。protected String[]
extraMetadataFormatClassNames
实现IIOMetadataFormat
的类的名称数组,并表示此插件支持的标准和本地格式的元数据格式,初始化为null
并通过构造函数进行设置。protected String[]
extraMetadataFormatNames
该插件支持的格式数组,不包括标准格式和原生格式,初始化为null
并通过构造函数进行设置。protected String
nativeMetadataFormatClassName
实现IIOMetadataFormat
并表示原生元数据格式的类的名称,初始化为null
并通过构造函数设置。protected String
nativeMetadataFormatName
该对象的本机元数据格式的名称,初始化为null
并通过构造函数进行设置。protected boolean
standardFormatSupported
一个布尔值,指示具体子类是否支持通过构造函数设置的标准元数据格式。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
IIOMetadata()
构造一个空的IIOMetadata
对象。protected
IIOMetadata(boolean standardMetadataFormatSupported, String nativeMetadataFormatName, String nativeMetadataFormatClassName, String[] extraMetadataFormatNames, String[] extraMetadataFormatClassNames)
构造具有给定格式名称和格式类名的IIOMetadata
对象,以及指示是否支持标准格式的布尔值。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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
被用来提供用于此设置IIOMetadata
对象时activateController
方法被调用时,重写所有默认控制器。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
并通过构造函数进行设置。
-
extraMetadataFormatClassNames
protected String[] extraMetadataFormatClassNames
实现IIOMetadataFormat
的类的名称数组,并表示该插件支持的标准和本机格式之外的元数据格式,初始化为null
并通过构造函数进行设置。
-
defaultController
protected IIOMetadataController defaultController
一个IIOMetadataController
被建议用作控制器此IIOMetadata
对象。 它可以通过getDefaultController
检索。 要安装默认控制器,请致电setController(getDefaultController())
。 这个实例变量应该由子类设置,它们选择提供自己的默认控制器(通常是GUI)来设置参数。
-
controller
protected IIOMetadataController controller
该IIOMetadataController
将用于提供此设置IIOMetadata
对象时activateController
方法被调用。 该值覆盖任何默认控制器,即使是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
s的数组,如果没有,null
。 -
extraMetadataFormatClassNames
-的阵列String
以及指示由该对象,或支持的其他任何格式的类名称null
如果有没有。 - 异常
-
IllegalArgumentException
- 如果extraMetadataFormatNames
长度为0。 -
IllegalArgumentException
- 如果extraMetadataFormatNames
和extraMetadataFormatClassNames
既不都是null
,也不是相同的长度。
-
-
方法详细信息
-
isStandardMetadataFormatSupported
public boolean isStandardMetadataFormatSupported()
返回true
如果标准元数据格式是由支持getMetadataFormat
,getAsTree
,setFromTree
,并mergeTree
。默认实现返回值为
standardFormatSupported
实例变量。- 结果
-
如果支持标准元数据格式,则为
true
。 - 另请参见:
-
getAsTree(java.lang.String)
,setFromTree(java.lang.String, org.w3c.dom.Node)
,mergeTree(java.lang.String, org.w3c.dom.Node)
,getMetadataFormat(java.lang.String)
-
isReadOnly
public abstract boolean isReadOnly()
返回true
如果此对象不支持mergeTree
,setFromTree
,并reset
方法。- 结果
-
如果这个
IIOMetadata
对象无法修改,IIOMetadata
true。
-
getNativeMetadataFormatName
public String getNativeMetadataFormatName()
返回此插件的“本机”元数据格式的名称,通常允许以该插件处理的格式存储的元数据进行无损编码和传输。 如果不支持这样的格式,将返回null
。“本机”元数据格式的结构和内容由创建此
IIOMetadata
对象的插件定义。 简单格式的插件通常会为根创建一个虚拟节点,然后创建一系列表示各个标签,块或关键字/值对的子节点。 插件可以选择是否记录其本机格式。默认实现返回值为
nativeMetadataFormatName
实例变量。- 结果
-
原生格式的名称,或
null
。 - 另请参见:
-
getExtraMetadataFormatNames()
,getMetadataFormatNames()
-
getExtraMetadataFormatNames
public String[] getExtraMetadataFormatNames()
返回的数组String
含的附加的元数据格式,比天然和标准格式,此插件中的识别名字小号getAsTree
,setFromTree
,和mergeTree
方法。 如果没有这样的附加格式,则返回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()
-
getMetadataFormatNames
public String[] getMetadataFormatNames()
返回数组String
包含的所有元数据格式的名称,包括本地和标准格式,通过此插件的认为科学getAsTree
,setFromTree
,并mergeTree
方法。 如果没有这样的格式,则返回null
。默认实现调用
getNativeMetadataFormatName
,isStandardMetadataFormatSupported
,并getExtraMetadataFormatNames
并返回合并后的结果。- 结果
-
一个
String
的阵列。 - 另请参见:
-
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
。 - 另请参见:
-
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
返回的名称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()
返回IIOMetadataNode
表示标准的透明度信息javax_imageio_1.0
元数据格式,或null
如果没有这样的信息是可用的。 该方法旨在由实用程序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
返回的名称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
被用来提供用于此设置IIOMetadata
对象时activateController
方法被调用时,重写所有默认控制器。 如果参数为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()
-
-