Module java.desktop

Class IIOMetadata

java.lang.Object
javax.imageio.metadata.IIOMetadata

public abstract class IIOMetadata extends Object
一个抽象类,用于被表示与图像和流相关的元数据(非图像数据)的对象扩展。插件使用不透明的、特定于插件的对象来表示元数据。然而,这些对象提供了访问它们内部信息的能力,作为支持XML DOM接口以及用于存储非文本数据和检索有关合法数据值信息的IIOMetadataNode对象树。这些树的格式取决于插件,但插件可以选择支持下面描述的插件中立格式。单个插件可以支持多个元数据格式,这些格式的名称可以通过调用getMetadataFormatNames来确定。插件还可以支持一种特殊格式,称为“本机”格式,旨在无损编码其元数据。该格式通常专门设计用于与特定文件格式一起工作,以便图像可以在相同格式中加载和保存而不丢失元数据,但可能不太适用于在不同图像格式的ImageReaderImageWriter之间传输元数据。要在两种本机格式之间进行尽可能无损地转换,必须使用ImageTranscoder对象。
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    将在调用activateController方法时用于为此IIOMetadata对象提供设置的IIOMetadataController
    建议用作此IIOMetadata对象控制器的IIOMetadataController
    protected String[]
    一个类名数组,表示由此插件支持的元数据格式的类名,除了标准和本机格式之外,初始化为null并通过构造函数设置。
    protected String[]
    一个格式名称数组,表示由此插件支持的格式,除了标准和本机格式之外,初始化为null并通过构造函数设置。
    protected String
    表示本机元数据格式的IIOMetadataFormat类名,初始化为null并通过构造函数设置。
    protected String
    此对象的本机元数据格式的名称,初始化为null并通过构造函数设置。
    protected boolean
    一个布尔值,指示具体子类是否支持标准元数据格式,通过构造函数设置。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    构造一个空的IIOMetadata对象。
    protected
    IIOMetadata(boolean standardMetadataFormatSupported, String nativeMetadataFormatName, String nativeMetadataFormatClassName, String[] extraMetadataFormatNames, String[] extraMetadataFormatClassNames)
    构造一个IIOMetadata对象,具有给定的格式名称和格式类名,以及指示是否支持标准格式的布尔值。
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    激活此IIOMetadata对象的安装IIOMetadataController并返回结果值。
    abstract Node
    getAsTree(String formatName)
    返回一个XML DOM Node对象,表示根据给定元数据格式定义的约定,此对象中包含的元数据树的根。
    返回当前安装的IIOMetadataController
    返回默认的IIOMetadataController,如果有的话,而不管当前安装的控制器是什么。
    String[]
    返回一个包含其他元数据格式名称的String数组,除了本机和标准格式之外,由此插件的getAsTreesetFromTreemergeTree方法识别。
    getMetadataFormat(String formatName)
    返回描述给定元数据格式的IIOMetadataFormat对象,如果没有可用的描述,则返回null
    String[]
    返回一个包含所有元数据格式名称的String数组,包括插件的getAsTreesetFromTreemergeTree方法识别的本机和标准格式。
    返回此插件的“本机”元数据格式的名称,通常允许以无损方式编码和传输由此插件处理的格式中存储的元数据。
    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
    如果此对象不支持mergeTreesetFromTreereset方法,则返回true
    boolean
    如果标准元数据格式受getMetadataFormatgetAsTreesetFromTreemergeTree支持,则返回true
    abstract void
    mergeTree(String formatName, Node root)
    根据给定的元数据格式,从定义的XML DOM Node树中的树改变此IIOMetadata对象的内部状态。
    abstract void
    reset()
    将此对象中存储的所有数据重置为默认值,通常是在构造后立即处于的状态,尽管确切的语义是特定于插件的。
    void
    设置用于在调用activateController方法时为此IIOMetadata对象提供设置的IIOMetadataController,覆盖任何默认控制器。
    void
    setFromTree(String formatName, Node root)
    根据给定的元数据格式,从定义的XML DOM Node树中设置此IIOMetadata对象的内部状态。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • standardFormatSupported

      protected boolean standardFormatSupported
      一个布尔值,指示具体子类是否支持标准元数据格式,通过构造函数设置。
    • nativeMetadataFormatName

      protected String nativeMetadataFormatName
      此对象的本机元数据格式的名称,初始化为null并通过构造函数设置。
    • nativeMetadataFormatClassName

      protected String nativeMetadataFormatClassName
      表示本机元数据格式的IIOMetadataFormat类名,初始化为null并通过构造函数设置。
    • extraMetadataFormatNames

      protected String[] extraMetadataFormatNames
      一个格式名称数组,表示由此插件支持的格式,除了标准和本机格式之外,初始化为null并通过构造函数设置。
    • extraMetadataFormatClassNames

      protected String[] extraMetadataFormatClassNames
      一个类名数组,表示由此插件支持的元数据格式的类名,除了标准和本机格式之外,初始化为null并通过构造函数设置。
    • defaultController

      protected IIOMetadataController defaultController
      建议用作此IIOMetadata对象控制器的IIOMetadataController。可以通过getDefaultController检索此实例变量。要安装默认控制器,请调用setController(getDefaultController())。应该由选择提供自己默认控制器的子类设置此实例变量,通常是用于设置参数的GUI。
      参见:
    • controller

      protected IIOMetadataController 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 - 如果extraMetadataFormatNamesextraMetadataFormatClassNames既不是null,也不是相同长度。
  • Method Details

    • isStandardMetadataFormatSupported

      public boolean isStandardMetadataFormatSupported()
      如果getMetadataFormatgetAsTreesetFromTreemergeTree支持标准元数据格式,则返回true

      默认实现返回standardFormatSupported实例变量的值。

      返回:
      如果支持标准元数据格式,则返回true
      参见:
    • isReadOnly

      public abstract boolean isReadOnly()
      如果此对象不支持mergeTreesetFromTreereset方法,则返回true
      返回:
      如果此IIOMetadata对象无法修改,则返回true。
    • getNativeMetadataFormatName

      public String getNativeMetadataFormatName()
      返回此插件的“本机”元数据格式的名称,该格式通常允许对由此插件处理的格式中存储的元数据进行无损编码和传输。如果不支持此类格式,则将返回null

      “本机”元数据格式的结构和内容由创建此IIOMetadata对象的插件定义。简单格式的插件通常会为根节点创建一个虚拟节点,然后创建一系列表示单个标记、块或关键字/值对的子节点。插件可以选择是否记录其本机格式。

      默认实现返回nativeMetadataFormatName实例变量的值。

      返回:
      本机格式的名称,或null
      参见:
    • getExtraMetadataFormatNames

      public String[] getExtraMetadataFormatNames()
      返回一个包含除本机和标准格式之外,由此插件的getAsTreesetFromTreemergeTree方法识别的其他元数据格式的名称的String数组。如果没有这样的附加格式,则返回null

      默认实现返回extraMetadataFormatNames实例变量的克隆。

      返回:
      至少长度为1的String数组,或null
      参见:
    • getMetadataFormatNames

      public String[] getMetadataFormatNames()
      返回一个包含所有元数据格式的名称的String数组,包括本机和标准格式,由此插件的getAsTreesetFromTreemergeTree方法识别。如果没有这样的格式,则返回null

      默认实现调用getNativeMetadataFormatNameisStandardMetadataFormatSupportedgetExtraMetadataFormatNames,并返回组合的结果。

      返回:
      一个String数组。
      参见:
    • getMetadataFormat

      public IIOMetadataFormat getMetadataFormat(String formatName)
      返回描述给定元数据格式的IIOMetadataFormat对象,如果没有可用的描述,则返回null。提供的名称必须是getMetadataFormatNames返回的名称之一(即本机格式名称、标准格式名称或getExtraMetadataFormatNames返回的名称之一)。

      默认实现检查名称是否与全局标准元数据格式名称匹配,并在支持时返回该格式。否则,它会检查本机格式名称,然后是任何其他格式名称。如果找到匹配项,它将从nativeMetadataFormatClassNameextraMetadataFormatClassNames中检索IIOMetadataFormat类的名称,并使用其getInstance方法构造该类的实例。

      参数:
      formatName - 所需的元数据格式。
      返回:
      一个IIOMetadataFormat对象。
      抛出:
      IllegalArgumentException - 如果formatNamenull或不是插件识别的名称之一。
      IllegalStateException - 如果无法加载与格式名称对应的类。
    • getAsTree

      public abstract Node getAsTree(String formatName)
      返回一个表示根据给定元数据格式定义的语法包含在此对象中的元数据树的根的XML DOM Node对象。

      可查询可用元数据格式的名称使用getMetadataFormatNames方法。

      参数:
      formatName - 所需的元数据格式。
      返回:
      一个形成树根的XML DOM Node对象。
      抛出:
      IllegalArgumentException - 如果formatNamenull或不是getMetadataFormatNames返回的名称之一。
      参见:
    • mergeTree

      public abstract void mergeTree(String formatName, Node root) throws IIOInvalidTreeException
      根据给定元数据格式定义的语法,从XML DOM Node树中的树更改此IIOMetadata对象的内部状态。仅根据需要更改先前状态以适应给定树中存在的节点。如果树的结构或内容无效,则将抛出IIOInvalidTreeException

      由于如何合并树或子树与另一个树的语义完全是特定于格式的,因此插件作者可以以适合格式的任何方式实现此方法,包括简单地用给定树的内容替换所有现有状态。

      参数:
      formatName - 所需的元数据格式。
      root - 一个XML DOM Node对象,形成树的根。
      抛出:
      IllegalStateException - 如果此对象是只读的。
      IllegalArgumentException - 如果formatNamenull或不是getMetadataFormatNames返回的名称之一。
      IllegalArgumentException - 如果rootnull
      IIOInvalidTreeException - 如果树无法成功使用给定格式的规则解析。
      参见:
    • getStandardChromaNode

      protected IIOMetadataNode getStandardChromaNode()
      返回一个代表标准javax_imageio_1.0元数据格式的色度信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardCompressionNode

      protected IIOMetadataNode getStandardCompressionNode()
      返回一个代表标准javax_imageio_1.0元数据格式的压缩信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardDataNode

      protected IIOMetadataNode getStandardDataNode()
      返回一个代表标准javax_imageio_1.0元数据格式的数据格式信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardDimensionNode

      protected IIOMetadataNode getStandardDimensionNode()
      返回一个代表标准javax_imageio_1.0元数据格式的尺寸信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardDocumentNode

      protected IIOMetadataNode getStandardDocumentNode()
      返回一个代表标准javax_imageio_1.0元数据格式的文档信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardTextNode

      protected IIOMetadataNode getStandardTextNode()
      返回一个代表标准javax_imageio_1.0元数据格式的文本信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardTileNode

      protected IIOMetadataNode getStandardTileNode()
      返回一个代表标准javax_imageio_1.0元数据格式的平铺信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
      参见:
    • getStandardTransparencyNode

      protected IIOMetadataNode getStandardTransparencyNode()
      返回一个代表标准javax_imageio_1.0元数据格式的透明度信息的IIOMetadataNode,如果没有此类信息可用,则返回null。此方法旨在由实用程序例程getStandardTree调用。

      默认实现返回null

      子类应重写此方法以生成适当的子树,如果希望支持标准元数据格式。

      返回:
      一个IIOMetadataNode,或null
    • getStandardTree

      protected final IIOMetadataNode getStandardTree()
      一个实用方法,返回一个IIOMetadataNode树,表示根据标准javax_imageio_1.0元数据格式的约定包含在此对象中的元数据。

      此方法调用各种getStandard*Node方法,以提供根节点的子节点根的每个子树。如果其中任何方法返回null,则相应的子树将被省略。如果它们全部返回null,则将返回由单个根节点组成的树。

      返回:
      一个IIOMetadataNode,表示javax_imageio_1.0格式中元数据树的根。
      参见:
    • setFromTree

      public void setFromTree(String formatName, Node root) throws IIOInvalidTreeException
      从一个由给定元数据格式定义语法的XML DOM Node树中设置此IIOMetadata对象的内部状态。之前的状态将被丢弃。如果树的结构或内容无效,将抛出IIOInvalidTreeException

      默认实现调用reset,然后调用mergeTree(formatName, root)

      参数:
      formatName - 所需的元数据格式。
      root - 一个XML DOM Node对象,形成树的根。
      抛出:
      IllegalStateException - 如果此对象是只读的。
      IllegalArgumentException - 如果formatNamenull或不是getMetadataFormatNames返回的名称之一。
      IllegalArgumentException - 如果rootnull
      IIOInvalidTreeException - 如果树无法成功使用给定格式的规则解析。
      参见:
    • reset

      public abstract void reset()
      重置此对象中存储的所有数据为默认值,通常是此对象在构造后立即处于的状态,尽管确切的语义是特定于插件的。请注意,有许多可能的默认值,取决于对象的创建方式。
      抛出:
      IllegalStateException - 如果此对象是只读的。
      参见:
    • setController

      public void setController(IIOMetadataController controller)
      设置IIOMetadata对象在调用activateController方法时用于提供设置的IIOMetadataController,覆盖任何默认控制器。如果参数为null,则不会使用任何控制器,包括任何默认控制器。要恢复默认设置,请使用setController(getDefaultController())

      默认实现将controller实例变量设置为提供的值。

      参数:
      controller - 适当的IIOMetadataController,或null
      参见:
    • getController

      public IIOMetadataController getController()
      返回当前安装的IIOMetadataController。如果有默认控制器,则可能是默认控制器,null,或者是最近一次调用setController的参数。

      默认实现返回controller实例变量的值。

      返回:
      当前安装的IIOMetadataController,或null
      参见:
    • getDefaultController

      public IIOMetadataController 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 - 如果当前没有安装控制器。
      参见: