- java.lang.Object
-
- javax.imageio.plugins.tiff.TIFFDirectory
-
- All Implemented Interfaces:
-
Cloneable
public class TIFFDirectory extends Object implements Cloneable
简化与TIFF本地图像元数据交互的便利类。 TIFF图像元数据树表示来自TIFF 6.0流的图像文件目录(IFD)。 IFD由多个IFD条目组成,每个IFD条目将识别标签号与兼容值相关联。 ATIFFDirectory
实例对应于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的指针。 该父母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
,该IFD本身将具有一个null
父标记。请注意,此实现不同步。 如果多个线程并发使用
TIFFDirectory
实例,并且至少有一个线程修改目录,例如,通过添加或删除TIFFField
或TIFFTagSet
s,则必须从外部进行同步。- 从以下版本开始:
- 9
- 另请参见:
-
IIOMetadata
,TIFFField
,TIFFTag
,TIFFTagSet
-
-
构造方法摘要
构造方法 Constructor 描述 TIFFDirectory(TIFFTagSet[] tagSets, TIFFTag parentTag)
构造一个TIFFDirectory
,它知道一组TIFFTagSet
s。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
addTagSet(TIFFTagSet tagSet)
将一个元素添加到该目录知道的TIFFTagSet
的组中。void
addTIFFField(TIFFField f)
将TIFF字段添加到目录。TIFFDirectory
clone()
克隆目录及其中包含的所有字段。boolean
containsTIFFField(int tagNumber)
确定具有给定标签号的TIFF字段是否包含在此目录中。static TIFFDirectory
createFromMetadata(IIOMetadata tiffImageMetadata)
从图像元数据对象的内容创建一个TIFFDirectory
实例。IIOMetadata
getAsMetadata()
将目录转换为元数据对象。int
getNumTIFFFields()
返回此目录中的TIFFField
个数。TIFFTag
getParentTag()
返回父TIFFTag
这个目录如果已定义或null
其他。TIFFTag
getTag(int tagNumber)
如果与此目录相关联的TIFFTagSet
中没有此类标记,则返回TIFFTag
,其标签号等于tagNumber
或null
。TIFFTagSet[]
getTagSets()
返回此目录知道的TIFFTagSet
s。TIFFField
getTIFFField(int tagNumber)
从目录中检索TIFF字段。TIFFField[]
getTIFFFields()
从目录中检索所有TIFF字段。void
removeTagSet(TIFFTagSet tagSet)
从目录中知道的TIFFTagSet
组中删除一个元素。void
removeTIFFField(int tagNumber)
从目录中删除TIFF字段。void
removeTIFFFields()
从目录中删除所有TIFF字段。
-
-
-
构造方法详细信息
-
TIFFDirectory
public TIFFDirectory(TIFFTagSet[] tagSets, TIFFTag parentTag)
构造一个TIFFDirectory
,它知道给定的一组TIFFTagSet
s。 也可以指定可选的父项TIFFTag
。- 参数
-
tagSets
- 与此目录相关联的TIFFTagSets
。 -
parentTag
- 该目录的父母TIFFTag
; 可能是null
。 - 异常
-
NullPointerException
- 如果tagSets
是null
。
-
-
方法详细信息
-
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
- 支持兼容图像元数据格式的元数据对象。 - 结果
-
A
TIFFDirectory
从提供的元数据对象的内容中填充。 - 异常
-
NullPointerException
- 如果tiffImageMetadata
是null
。 -
IllegalArgumentException
- 如果tiffImageMetadata
不支持兼容的图像元数据格式。 -
IIOInvalidTreeException
- 如果提供的元数据对象无法解析。
-
getTagSets
public TIFFTagSet[] getTagSets()
返回此目录知道的TIFFTagSet
s。- 结果
-
该
TIFFTagSet
与此TIFFDirectory
相关联。
-
addTagSet
public void addTagSet(TIFFTagSet tagSet)
将一个元素添加到该目录知道的TIFFTagSet
的组中。- 参数
-
tagSet
- 要添加的TIFFTagSet
。 - 异常
-
NullPointerException
- 如果tagSet
是null
。
-
removeTagSet
public void removeTagSet(TIFFTagSet tagSet)
从目录中知道的TIFFTagSet
的组中删除一个元素。- 参数
-
tagSet
- 要删除的TIFFTagSet
。 - 异常
-
NullPointerException
- 如果tagSet
是null
。
-
getParentTag
public TIFFTag getParentTag()
如果已经定义了该目录,则返回该目录的母版本TIFFTag
,否则返回null
。- 结果
-
父
TIFFTag
如此TIFFDiectory
或者null
。
-
getTag
public TIFFTag getTag(int tagNumber)
如果与此目录相关联的TIFFTagSet
中没有此类标签,则返回TIFFTag
,其标签号等于tagNumber
或null
。- 参数
-
tagNumber
- 感兴趣的标签号。 - 结果
-
相应的
TIFFTag
或null
。
-
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
- 如果f
是null
。
-
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
的内容中初始化的元数据实例。
-
clone
public TIFFDirectory clone() throws CloneNotSupportedException
克隆目录及其中包含的所有字段。- 重写:
-
clone
在Object
- 结果
-
这个
TIFFDirectory
的克隆。 - 异常
-
CloneNotSupportedException
- 如果实例无法克隆。 - 另请参见:
-
Cloneable
-
-