Module  java.desktop

Class TIFFDirectory

  • All Implemented Interfaces:
    Cloneable


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

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

    当写入时,一个IIOMetadata对象供的一个write()的方法ImageWriter可以由创建TIFFDirectory通过getAsMetadata() TIFFDirectory本身可以通过构造或由IIOMetadata返回的IIOMetadata对象创建 目录中的TIFFField可以使用此类中提供的mutator方法设置。

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

    A 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 ,该IFD本身将具有一个null父标记。

    请注意,此实现不同步。 如果多个线程并发使用TIFFDirectory实例,并且至少有一个线程修改目录,例如,通过添加或删除TIFFFieldTIFFTagSet s,则必须从外部进行同步。

    从以下版本开始:
    9
    另请参见:
    IIOMetadataTIFFFieldTIFFTagTIFFTagSet
    • 构造方法详细信息

      • 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 - 支持兼容图像元数据格式的元数据对象。
        结果
        A TIFFDirectory从提供的元数据对象的内容中填充。
        异常
        NullPointerException - 如果 tiffImageMetadatanull
        IllegalArgumentException - 如果 tiffImageMetadata不支持兼容的图像元数据格式。
        IIOInvalidTreeException - 如果提供的元数据对象无法解析。
      • getTagSets

        public TIFFTagSet[] getTagSets​()
        返回此目录知道的TIFFTagSet s。
        结果
        TIFFTagSet与此 TIFFDirectory相关联。
      • 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
        结果
        TIFFTag如此 TIFFDiectory或者 null
      • getTag

        public TIFFTag getTag​(int tagNumber)
        如果与此目录相关联的TIFFTagSet没有此类标签,则返回TIFFTag ,其标签号等于tagNumbernull
        参数
        tagNumber - 感兴趣的标签号。
        结果
        相应的 TIFFTagnull
      • getNumTIFFFields

        public int getNumTIFFFields​()
        返回此目录中的TIFFField的数量。
        结果
        TIFFField的数量在这 TIFFDirectory
      • containsTIFFField

        public boolean containsTIFFField​(int tagNumber)
        确定具有给定标签号的TIFF字段是否包含在此目录中。
        参数
        tagNumber - 标签号。
        结果
        无论是TIFFTag等于标签号码tagNumber是存在于该TIFFDirectory
      • addTIFFField

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

        public TIFFField getTIFFField​(int tagNumber)
        从目录中检索TIFF字段。
        参数
        tagNumber - 与该字段关联的标签的标签号。
        结果
        A 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的内容中初始化的元数据实例。