模块 java.desktop

类 TIFFDirectory

java.lang.Object
javax.imageio.plugins.tiff.TIFFDirectory
所有已实现的接口:
Cloneable

public class TIFFDirectory extends Object implements Cloneable
用于简化与 TIFF 本机图像元数据交互的便利类。 TIFF 图像元数据树表示来自 TIFF 6.0 流的图像文件目录 (IFD)。一个 IFD 由许多 IFD 条目组成,每个 IFD 条目都将一个识别标签号与一个兼容值相关联。一个TIFFDirectory实例对应一个IFD,包含一组TIFFField s,每个实例对应IFD中的一个IFD Entry。

读取时,可以通过将 ImageReader.getImageMetadata() 返回的值传递给 createFromMetadata() 来创建 TIFFDirectory。然后可以使用此类中提供的访问器方法获取目录中的 TIFFField s。

写入时,ImageWriter write() 方法之一使用的 IIOMetadata 对象可以由 getAsMetadata() TIFFDirectory 创建。 TIFFDirectory 本身可以通过构造或从 ImageWriter.getDefaultImageMetadata() 返回的 IIOMetadata 对象创建。目录中的 TIFFField 可以使用此类中提供的修改器方法进行设置。

TIFFDirectory 知道与其关联的 TIFFTagSet 组中的标签编号。当从原生图像元数据对象创建 TIFFDirectory 时,这些标签集派生自 TIFFIFD 节点的 tagSets 属性。

TIFFDirectory 也可能有一个父级 TIFFTag 。如果该目录表示一个 IFD 而不是图像的根 IFD,则会发生这种情况。父标签是 IFD 条目的标签,它是指向 TIFFDirectory 表示的 IFD 的指针。此父级 TIFFTagTIFFTag.isIFDPointer() 方法必须返回 true 。当从原生图像元数据对象创建 TIFFDirectory 时,父标签集是从相应 TIFFIFD 节点的 parentTagName 属性设置的。请注意,具有非 null 父标签的 TIFFDirectory 实例将包含在 TIFFField 实例的数据字段中,该实例的标签字段等于包含的目录的父标签。

以 Exif 图像为例。与 Exif 流中的 Exif IFD 对应的TIFFDirectory 实例将具有父标签TAG_EXIF_IFD_POINTER ,并将ExifTIFFTagSet 包含在其已知标签集组中。与此 Exif IFD 对应的 TIFFDirectory 将包含在 TIFFField 的数据字段中,后者又将包含在与 Exif 图像的主要 IFD 对应的 TIFFDirectory 中,该图像本身将具有 null 值父标签。

请注意,此实现不是同步的。如果多个线程同时使用一个 TIFFDirectory 实例,并且至少有一个线程修改了目录,例如,通过添加或删除 TIFFField s 或 TIFFTagSet s,它必须外部同步。

自从:
9
参见:
  • 构造方法详细信息

    • TIFFDirectory

      public TIFFDirectory(TIFFTagSet [] tagSets, TIFFTag  parentTag)
      构造一个 TIFFDirectory,它知道一组给定的 TIFFTagSet s。还可以指定一个可选的父节点 TIFFTag
      参数:
      tagSets - 与此目录关联的 TIFFTagSets
      parentTag - 此目录的父目录 TIFFTag;可能是 null
      抛出:
      NullPointerException - 如果 tagSetsnull
  • 方法详情

    • createFromMetadata

      public static TIFFDirectory  createFromMetadata(IIOMetadata  tiffImageMetadata) throws IIOInvalidTreeException
      从图像元数据对象的内容创建一个 TIFFDirectory 实例。提供的对象必须支持 TIFF ImageWriter 插件支持的图像元数据格式。这通常是 TIFF 本机图像元数据格式 javax_imageio_tiff_image_1.0 或 Java Image I/O 标准元数据格式 javax_imageio_1.0
      参数:
      tiffImageMetadata - 支持兼容图像元数据格式的元数据对象。
      返回:
      TIFFDirectory 从提供的元数据对象的内容填充。
      抛出:
      NullPointerException - 如果 tiffImageMetadatanull
      IllegalArgumentException - 如果 tiffImageMetadata 不支持兼容的图像元数据格式。
      IIOInvalidTreeException - 如果无法解析提供的元数据对象。
    • getTagSets

      public TIFFTagSet [] getTagSets()
      返回此目录知道的 TIFFTagSet s。
      返回:
      与此 TIFFDirectory 关联的 TIFFTagSet
    • addTagSet

      public void addTagSet(TIFFTagSet  tagSet)
      添加一个元素到这个目录知道的 TIFFTagSet 组。
      参数:
      tagSet - 要添加的 TIFFTagSet
      抛出:
      NullPointerException - 如果 tagSetnull
    • removeTagSet

      public void removeTagSet(TIFFTagSet  tagSet)
      从该目录知道的 TIFFTagSet 组中删除一个元素。
      参数:
      tagSet - 要删除的 TIFFTagSet
      抛出:
      NullPointerException - 如果 tagSetnull
    • getParentTag

      public TIFFTag  getParentTag()
      如果已定义,则返回此目录的父目录 TIFFTag ,否则返回 null
      返回:
      这个 TIFFDiectorynull 的父级 TIFFTag
    • getTag

      public TIFFTag  getTag(int tagNumber)
      如果与此目录关联的 TIFFTagSet 中不存在此类标记,则返回标记号等于 tagNumbernullTIFFTag
      参数:
      tagNumber - 感兴趣的标签号。
      返回:
      相应的 TIFFTagnull
    • getNumTIFFFields

      public int getNumTIFFFields()
      返回此目录中 TIFFField 的数量。
      返回:
      这个 TIFFDirectoryTIFFField 的数量。
    • containsTIFFField

      public boolean containsTIFFField(int tagNumber)
      确定此目录中是否包含具有给定标记号的 TIFF 字段。
      参数:
      tagNumber - 标签号。
      返回:
      TIFFDirectory 中是否存在标记号等于 tagNumberTIFFTag
    • addTIFFField

      public void addTIFFField(TIFFField  f)
      将 TIFF 字段添加到目录。
      参数:
      f - 要添加的字段。
      抛出:
      NullPointerException - 如果 fnull
    • getTIFFField

      public TIFFField  getTIFFField(int tagNumber)
      从目录中检索 TIFF 字段。
      参数:
      tagNumber - 与字段关联的标签的标签编号。
      返回:
      如果不存在这样的字段,则 TIFFField 带有请求的标签号 null
    • removeTIFFField

      public void removeTIFFField(int tagNumber)
      从目录中删除 TIFF 字段。
      参数:
      tagNumber - 与字段关联的标签的标签编号。
    • getTIFFFields

      public TIFFField [] getTIFFFields()
      从目录中检索所有 TIFF 字段。
      返回:
      所有 TIFF 字段的数组,按标记号的数字递增顺序排列。
    • removeTIFFFields

      public void removeTIFFFields()
      从目录中删除所有 TIFF 字段。
    • getAsMetadata

      public IIOMetadata  getAsMetadata()
      将目录转换为元数据对象。
      返回:
      从这个 TIFFDirectory 的内容初始化的元数据实例。
    • clone

      public TIFFDirectory  clone() throws CloneNotSupportedException
      克隆目录和其中包含的所有字段。
      重写:
      clone 在类 Object
      返回:
      这个 TIFFDirectory 的克隆。
      抛出:
      CloneNotSupportedException - 如果无法克隆实例。
      参见: