- java.lang.Object
-
- javax.imageio.plugins.tiff.TIFFDirectory
-
- All Implemented Interfaces:
Cloneable
public class TIFFDirectory extends Object implements Cloneable
A convenience class for simplifying interaction with TIFF native image metadata. A TIFF image metadata tree represents an Image File Directory (IFD) from a TIFF 6.0 stream. An IFD consists of a number of IFD Entries each of which associates an identifying tag number with a compatible value. ATIFFDirectoryinstance corresponds to an IFD and contains a set ofTIFFFields each of which corresponds to an IFD Entry in the IFD.When reading, a
TIFFDirectorymay be created by passing the value returned byImageReader.getImageMetadata()tocreateFromMetadata(). TheTIFFFields in the directory may then be obtained using the accessor methods provided in this class.When writing, an
IIOMetadataobject for use by one of thewrite()methods ofImageWritermay be created from aTIFFDirectorybygetAsMetadata(). TheTIFFDirectoryitself may be created by construction or from theIIOMetadataobject returned byImageWriter.getDefaultImageMetadata(). TheTIFFFields in the directory may be set using the mutator methods provided in this class.A
TIFFDirectoryis aware of the tag numbers in the group ofTIFFTagSets associated with it. When aTIFFDirectoryis created from a native image metadata object, these tag sets are derived from thetagSetsattribute of theTIFFIFDnode.A
TIFFDirectorymight also have a parentTIFFTag. This will occur if the directory represents an IFD other than the root IFD of the image. The parent tag is the tag of the IFD Entry which is a pointer to the IFD represented by thisTIFFDirectory. TheTIFFTag.isIFDPointer()method of this parentTIFFTagmust returntrue. When aTIFFDirectoryis created from a native image metadata object, the parent tag set is set from theparentTagNameattribute of the correspondingTIFFIFDnode. Note that aTIFFDirectoryinstance which has a non-nullparent tag will be contained in the data field of aTIFFFieldinstance which has a tag field equal to the contained directory's parent tag.As an example consider an Exif image. The
TIFFDirectoryinstance corresponding to the Exif IFD in the Exif stream would have parent tagTAG_EXIF_IFD_POINTERand would includeExifTIFFTagSetin its group of known tag sets. TheTIFFDirectorycorresponding to this Exif IFD will be contained in the data field of aTIFFFieldwhich will in turn be contained in theTIFFDirectorycorresponding to the primary IFD of the Exif image which will itself have anull-valued parent tag.Note that this implementation is not synchronized. If multiple threads use a
TIFFDirectoryinstance concurrently, and at least one of the threads modifies the directory, for example, by adding or removingTIFFFields orTIFFTagSets, it must be synchronized externally.- Since:
- 9
- See Also:
IIOMetadata,TIFFField,TIFFTag,TIFFTagSet
-
-
Constructor Summary
Constructors Constructor Description TIFFDirectory(TIFFTagSet[] tagSets, TIFFTag parentTag)Constructs aTIFFDirectorywhich is aware of a given group ofTIFFTagSets.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddTagSet(TIFFTagSet tagSet)Adds an element to the group ofTIFFTagSets of which this directory is aware.voidaddTIFFField(TIFFField f)Adds a TIFF field to the directory.TIFFDirectoryclone()Clones the directory and all the fields contained therein.booleancontainsTIFFField(int tagNumber)Determines whether a TIFF field with the given tag number is contained in this directory.static TIFFDirectorycreateFromMetadata(IIOMetadata tiffImageMetadata)Creates aTIFFDirectoryinstance from the contents of an image metadata object.IIOMetadatagetAsMetadata()Converts the directory to a metadata object.intgetNumTIFFFields()Returns the number ofTIFFFields in this directory.TIFFTaggetParentTag()Returns the parentTIFFTagof this directory if one has been defined ornullotherwise.TIFFTaggetTag(int tagNumber)Returns theTIFFTagwhich has tag number equal totagNumberornullif no such tag exists in theTIFFTagSets associated with this directory.TIFFTagSet[]getTagSets()Returns theTIFFTagSets of which this directory is aware.TIFFFieldgetTIFFField(int tagNumber)Retrieves a TIFF field from the directory.TIFFField[]getTIFFFields()Retrieves all TIFF fields from the directory.voidremoveTagSet(TIFFTagSet tagSet)Removes an element from the group ofTIFFTagSets of which this directory is aware.voidremoveTIFFField(int tagNumber)Removes a TIFF field from the directory.voidremoveTIFFFields()Removes all TIFF fields from the directory.
-
-
-
Constructor Detail
-
TIFFDirectory
public TIFFDirectory(TIFFTagSet[] tagSets, TIFFTag parentTag)
Constructs aTIFFDirectorywhich is aware of a given group ofTIFFTagSets. An optional parentTIFFTagmay also be specified.- Parameters:
tagSets- TheTIFFTagSetsassociated with this directory.parentTag- The parentTIFFTagof this directory; may benull.- Throws:
NullPointerException- iftagSetsisnull.
-
-
Method Detail
-
createFromMetadata
public static TIFFDirectory createFromMetadata(IIOMetadata tiffImageMetadata) throws IIOInvalidTreeException
Creates aTIFFDirectoryinstance from the contents of an image metadata object. The supplied object must support an image metadata format supported by the TIFFImageWriterplug-in. This will usually be either the TIFF native image metadata formatjavax_imageio_tiff_image_1.0or the Java Image I/O standard metadata formatjavax_imageio_1.0.- Parameters:
tiffImageMetadata- A metadata object which supports a compatible image metadata format.- Returns:
- A
TIFFDirectorypopulated from the contents of the supplied metadata object. - Throws:
NullPointerException- iftiffImageMetadataisnull.IllegalArgumentException- iftiffImageMetadatadoes not support a compatible image metadata format.IIOInvalidTreeException- if the supplied metadata object cannot be parsed.
-
getTagSets
public TIFFTagSet[] getTagSets()
Returns theTIFFTagSets of which this directory is aware.- Returns:
- The
TIFFTagSets associated with thisTIFFDirectory.
-
addTagSet
public void addTagSet(TIFFTagSet tagSet)
Adds an element to the group ofTIFFTagSets of which this directory is aware.- Parameters:
tagSet- TheTIFFTagSetto add.- Throws:
NullPointerException- iftagSetisnull.
-
removeTagSet
public void removeTagSet(TIFFTagSet tagSet)
Removes an element from the group ofTIFFTagSets of which this directory is aware.- Parameters:
tagSet- TheTIFFTagSetto remove.- Throws:
NullPointerException- iftagSetisnull.
-
getParentTag
public TIFFTag getParentTag()
Returns the parentTIFFTagof this directory if one has been defined ornullotherwise.- Returns:
- The parent
TIFFTagof thisTIFFDiectoryornull.
-
getTag
public TIFFTag getTag(int tagNumber)
Returns theTIFFTagwhich has tag number equal totagNumberornullif no such tag exists in theTIFFTagSets associated with this directory.- Parameters:
tagNumber- The tag number of interest.- Returns:
- The corresponding
TIFFTagornull.
-
getNumTIFFFields
public int getNumTIFFFields()
Returns the number ofTIFFFields in this directory.- Returns:
- The number of
TIFFFields in thisTIFFDirectory.
-
containsTIFFField
public boolean containsTIFFField(int tagNumber)
Determines whether a TIFF field with the given tag number is contained in this directory.- Parameters:
tagNumber- The tag number.- Returns:
- Whether a
TIFFTagwith tag number equal totagNumberis present in thisTIFFDirectory.
-
addTIFFField
public void addTIFFField(TIFFField f)
Adds a TIFF field to the directory.- Parameters:
f- The field to add.- Throws:
NullPointerException- iffisnull.
-
getTIFFField
public TIFFField getTIFFField(int tagNumber)
Retrieves a TIFF field from the directory.- Parameters:
tagNumber- The tag number of the tag associated with the field.- Returns:
- A
TIFFFieldwith the requested tag number ofnullif no such field is present.
-
removeTIFFField
public void removeTIFFField(int tagNumber)
Removes a TIFF field from the directory.- Parameters:
tagNumber- The tag number of the tag associated with the field.
-
getTIFFFields
public TIFFField[] getTIFFFields()
Retrieves all TIFF fields from the directory.- Returns:
- An array of all TIFF fields in order of numerically increasing tag number.
-
removeTIFFFields
public void removeTIFFFields()
Removes all TIFF fields from the directory.
-
getAsMetadata
public IIOMetadata getAsMetadata()
Converts the directory to a metadata object.- Returns:
- A metadata instance initialized from the contents of this
TIFFDirectory.
-
clone
public TIFFDirectory clone() throws CloneNotSupportedException
Clones the directory and all the fields contained therein.- Overrides:
clonein classObject- Returns:
- A clone of this
TIFFDirectory. - Throws:
CloneNotSupportedException- if the instance cannot be cloned.
-
-