Module java.desktop

Class 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,每个TIFFField对应于IFD中的IFD条目。

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

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

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

TIFFDirectory还可能具有父TIFFTag。如果目录表示图像的根IFD之外的IFD,则会发生这种情况。父标记是指向由此TIFFDirectory表示的IFD的指针的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实例,并且至少有一个线程修改了目录,例如通过添加或删除TIFFFieldTIFFTagSet,则必须在外部进行同步。

自:
9
参见:
  • Constructor Details

    • TIFFDirectory

      public TIFFDirectory(TIFFTagSet[] tagSets, TIFFTag parentTag)
      构造一个TIFFDirectory,该目录知道给定组的TIFFTagSet。还可以指定一个可选的父TIFFTag
      参数:
      tagSets - 与此目录关联的TIFFTagSets
      parentTag - 此目录的父TIFFTag;可以为null
      抛出:
      NullPointerException - 如果tagSetsnull
  • Method Details

    • 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
      返回:
      与此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
      返回:
      TIFFDiectory的父TIFFTagnull
    • getTag

      public TIFFTag getTag(int tagNumber)
      返回具有与tagNumber相等的标记号的TIFFTag,如果在与此目录关联的TIFFTagSet中不存在此类标记,则返回null
      参数:
      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 - 与字段关联的标签号。
      返回:
      请求的标签号的 TIFFFieldnull(如果不存在这样的字段)。
    • 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 - 如果无法克隆该实例。
      参见: