#include <tiffio.h>
int TIFFSetDirectory(TIFF *tif, tdir_t dirnum)
int TIFFSetSubDirectory(TIFF *tif, uint64_t diroff)


TIFFSetDirectory() changes the current directory and reads its contents with TIFFReadDirectory(). The parameter dirnum specifies the subfile/directory as an integer number, with the first directory numbered zero.

TIFFSetSubDirectory() acts like TIFFSetDirectory(), except the directory is specified as a file offset instead of an index; this is required for accessing subdirectories linked through a SubIFD tag.

In the case of several SubIFDs of a main image, there are two possibilities that are not even mutually exclusive.

  1. The SubIFD tag contains an array with all offsets of the SubIFDs.

  2. The SubIFDs are concatenated with their NextIFD parameters to a SubIFD chain.

LibTiff does support SubIFD chains partially. When a SubIFD tag is activated with TIFFSetSubDirectory(), TIFFReadDirectory() is able to parse through the SubIFD chain. The tif_curdir is just incremented from its current value and thus gets arbitrary values when parsing through SubIFD chains. TIFFSetDirectory() only works with main-IFD chains because allways starts with the first main-IFD and thus is able to reset the SubIFD reading chain to the main-IFD chain.

Directory query functions TIFFCurrentDirectory(), TIFFCurrentDirOffset(), TIFFLastDirectory() and TIFFNumberOfDirectories() retrieve information about directories in an open TIFF file. Be aware that until a directory is not written to file AND read back, the query functions won't retrieve the correct information!

Return values

On successful return 1 is returned. Otherwise, 0 is returned if dirnum or diroff specifies a non-existent directory, or if an error was encountered while reading the directory's contents.


All error messages are directed to the TIFFErrorExtR() routine.

"%s: Error fetching directory count":

An error was encountered while reading the "directory count" field.

"%s: Error fetching directory link":

An error was encountered while reading the "link value" that points to the next directory in a file.

See also

TIFFquery (3tiff), TIFFOpen (3tiff), TIFFCreateDirectory (3tiff), TIFFCustomDirectory (3tiff), TIFFWriteDirectory (3tiff), TIFFReadDirectory (3tiff), libtiff (3tiff)