- 所有已实现的接口:
-
Cloneable
TIFFDirectory
实例对应于IFD,并包含一组TIFFField
,每个TIFFField
对应于IFD中的IFD条目。
在读取时,可以通过将ImageReader.getImageMetadata()
返回的值传递给createFromMetadata()
来创建一个TIFFDirectory
。然后可以使用此类提供的访问器方法获取目录中的TIFFField
。
在写入时,可以通过从TIFFDirectory
创建一个IIOMetadata
对象,用于ImageWriter
的write()
方法之一,通过getAsMetadata()
。可以通过构造或从ImageWriter.getDefaultImageMetadata()
返回的IIOMetadata
对象创建TIFFDirectory
。可以使用此类提供的修改器方法设置目录中的TIFFField
。
TIFFDirectory
知道与其关联的一组TIFFTagSet
中的标记号。当从本机图像元数据对象创建TIFFDirectory
时,这些标记集是从TIFFIFD
节点的tagSets
属性派生的。
TIFFDirectory
还可能具有父TIFFTag
。如果目录表示图像的根IFD之外的IFD,则会发生这种情况。父标记是指向由此TIFFDirectory
表示的IFD的指针的IFD条目的标记。此父TIFFTag
的TIFFTag.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
或TIFFTagSet
,则必须在外部进行同步。
- 自:
- 9
- 参见:
-
Constructor Summary
ConstructorDescriptionTIFFDirectory
(TIFFTagSet[] tagSets, TIFFTag parentTag) 构造一个TIFFDirectory
,该目录知道给定组的TIFFTagSet
。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
addTagSet
(TIFFTagSet tagSet) 将元素添加到此目录知道的一组TIFFTagSet
中。void
将TIFF字段添加到目录中。clone()
克隆目录及其中包含的所有字段。boolean
containsTIFFField
(int tagNumber) 确定此目录中是否包含具有给定标记号的TIFF字段。static TIFFDirectory
createFromMetadata
(IIOMetadata tiffImageMetadata) 从图像元数据对象的内容创建TIFFDirectory
实例。将目录转换为元数据对象。int
返回此目录中的TIFFField
的数量。返回此目录的父TIFFTag
(如果已定义),否则返回null
。getTag
(int tagNumber) 返回此目录知道的TIFFTagSet
。getTIFFField
(int tagNumber) 从目录中检索一个TIFF字段。从目录中检索所有TIFF字段。void
removeTagSet
(TIFFTagSet tagSet) 从此目录知道的一组TIFFTagSet
中删除一个元素。void
removeTIFFField
(int tagNumber) 从目录中删除一个TIFF字段。void
从目录中删除所有TIFF字段。
-
Constructor Details
-
TIFFDirectory
- 参数:
-
tagSets
- 与此目录关联的TIFFTagSets
。 -
parentTag
- 此目录的父TIFFTag
;可以为null
。 - 抛出:
-
NullPointerException
- 如果tagSets
为null
。
-
-
Method Details
-
createFromMetadata
public static TIFFDirectory createFromMetadata(IIOMetadata tiffImageMetadata) throws IIOInvalidTreeException 从图像元数据对象的内容创建TIFFDirectory
实例。提供的对象必须支持TIFFImageWriter
插件支持的图像元数据格式。这通常是TIFF本机图像元数据格式javax_imageio_tiff_image_1.0
或Java Image I/O标准元数据格式javax_imageio_1.0
。- 参数:
-
tiffImageMetadata
- 支持兼容图像元数据格式的元数据对象。 - 返回:
-
从提供的元数据对象的内容填充的
TIFFDirectory
。 - 抛出:
-
NullPointerException
- 如果tiffImageMetadata
为null
。 -
IllegalArgumentException
- 如果tiffImageMetadata
不支持兼容的图像元数据格式。 -
IIOInvalidTreeException
- 如果无法解析提供的元数据对象。
-
getTagSets
返回此目录知道的TIFFTagSet
。- 返回:
-
与此
TIFFDirectory
关联的TIFFTagSet
。
-
addTagSet
将元素添加到此目录知道的一组TIFFTagSet
中。- 参数:
-
tagSet
- 要添加的TIFFTagSet
。 - 抛出:
-
NullPointerException
- 如果tagSet
为null
。
-
removeTagSet
从此目录知道的一组TIFFTagSet
中删除一个元素。- 参数:
-
tagSet
- 要删除的TIFFTagSet
。 - 抛出:
-
NullPointerException
- 如果tagSet
为null
。
-
getParentTag
返回此目录的父TIFFTag
(如果已定义),否则返回null
。- 返回:
-
此
TIFFDiectory
的父TIFFTag
或null
。
-
getTag
- 参数:
-
tagNumber
- 感兴趣的标签号。 - 返回:
-
相应的
TIFFTag
或null
。
-
getNumTIFFFields
public int getNumTIFFFields()返回此目录中TIFFField
的数量。- 返回:
-
此
TIFFDirectory
中TIFFField
的数量。
-
containsTIFFField
public boolean containsTIFFField(int tagNumber) 确定此目录中是否包含具有给定标签号的 TIFF 字段。- 参数:
-
tagNumber
- 标签号。 - 返回:
-
此
TIFFDirectory
中是否存在标签号等于tagNumber
的TIFFTag
。
-
addTIFFField
向目录中添加一个 TIFF 字段。- 参数:
-
f
- 要添加的字段。 - 抛出:
-
NullPointerException
- 如果f
为null
。
-
getTIFFField
从目录中检索一个 TIFF 字段。- 参数:
-
tagNumber
- 与字段关联的标签号。 - 返回:
-
请求的标签号的
TIFFField
或null
(如果不存在这样的字段)。
-
removeTIFFField
public void removeTIFFField(int tagNumber) 从目录中删除一个 TIFF 字段。- 参数:
-
tagNumber
- 与字段关联的标签号。
-
getTIFFFields
从目录中检索所有 TIFF 字段。- 返回:
- 按照标签号的数字递增顺序的所有 TIFF 字段的数组。
-
removeTIFFFields
public void removeTIFFFields()从目录中删除所有 TIFF 字段。 -
getAsMetadata
将目录转换为元数据对象。- 返回:
-
从此
TIFFDirectory
的内容初始化的元数据实例。
-
clone
克隆目录及其中包含的所有字段。- 覆盖:
-
clone
在类Object
中 - 返回:
-
此
TIFFDirectory
的克隆。 - 抛出:
-
CloneNotSupportedException
- 如果无法克隆该实例。 - 参见:
-