ImageGear for C and C++ on Linux v19.10 - Updated
TIFF Metadata Structure
User Guide > File Formats and Compressions > File Formats > Metadata Structures > TIFF Metadata Structure

Brief information on TIFF metadata levels is provided in the set of tables below:

TIFF Level

Name Id Type Value Type Value Value Length Read Only
"TIFF" IG_FORMAT_TIF LEVEL_START 0 NULL 0 TRUE
"TIF_ HEADER" 59936 VALUE_ITEM UINT16 0x4949 or 0x4D4D 1 TRUE
Main IFD level
"TIFF" IG_FORMAT_TIF LEVEL_END 0 NULL 0 TRUE

All items between items with Name "TIFF" and IdIG_FORMAT_TIF (Type LEVEL_START and LEVEL_END) are interpreted as TIFF data. If during sending data from application level to filter level the first item is omitted the data will not be parsed and saved.

The subIFDs is not parsed and passed.

IFD Level

Name Id Type Value Type Value Value Length Read Only
"IFD" 0 LEVEL_START 0 NULL 0 TRUE
One or more tag items
"IFD" 0 LEVEL_END 0 NULL 0 TRUE

Tags

Most of TIFF tags are passed through metadata callback as

Name Id Type Value Type Value Value Length Read Only
<TagName> <TagId> VALUE_ITEM <ValueType> <TagValue> <TagCount> <R.o.>

The valid values of <TagName>, <TagId> and "Read Only" attributes are available in Description of TIFF tags Table.

See Also:TIFF Complex Data Tags

It is possible to use tag identifier and value of nonstandard tag (user defined tag).

The <TagCount> is real tag count value that is read/written in file.

The < ValueType > value is the metadata type constant that matches TIFF tag type as described in the table below:

TIFF Tag Type Metadata Type
BYTE AM_TID_META_UINT8
SBYTE AM_TID_META_INT8
SHORT AM_TID_META_UINT16
SSHORT AM_TID_META_INT16
LONG AM_TID_META_UINT32
SLONG AM_TID_META_INT32
RATIONAL AM_TID_META_RATIONAL_UINT32
SRATIONAL AM_TID_META_RATIONAL_INT32
FLOAT AM_TID_META_FLOAT
DOUBLE AM_TID_META_DOUBLE
ASCII AM_TID_META_STRING
UNDEFINED AM_TID_RAW_DATA

Description of TIFF Tags

The following table lists the most frequently used TIFF tags. See enumIGTIFFTagIDs for a complete list of TIFF tags. For tags not listed in this table, see Non-Image Data Processing for information about how to find out whether a tag is read only or not.

Item Name Item Id Read only
"NewSubfileType" 254 TRUE
"SubfileType" 255 TRUE
"ImageWidth" 256 TRUE
"ImageLength" 257 TRUE
"BitsPerSample" 258 TRUE
"Compression" 259 TRUE
"PhotometricInterpretation" 262 TRUE
"Threshholding" 263 FALSE
"CellWidth" 264 TRUE
"CellLength" 265 TRUE
"FillOrder" 266 FALSE
"DocumentName" 269 FALSE
"ImageDescription" 270 FALSE
"Make" 271 FALSE
"Model" 272 FALSE
"StripOffsets" 273 TRUE
"Orientation" 274 FALSE1
"SamplesPerPixel" 277 TRUE
"RowsPerStrip" 278 TRUE
"StripByteCounts" 279 TRUE
"MinSampleValue" 280 FALSE
"MaxSampleValue" 281 FALSE
"XResolution" 282 FALSE
"YResolution" 283 FALSE
"PlanarConfiguration" 284 TRUE
"PageName" 285 FALSE
"XPosition" 286 FALSE
"YPosition" 287 FALSE
"FreeOffsets" 288 TRUE
"FreeByteCounts" 289 TRUE
"GrayResponseUnit" 290 FALSE
"GrayResponseCurve" 291 FALSE
"T4Options" 292 TRUE
"T6Options" 293 TRUE
"ResolutionUnit" 296 FALSE
"PageNumber" 297 TRUE
"TransferFunction" 301 FALSE
"Software" 305 FALSE
"DateTime" 306 FALSE
"Artist" 315 FALSE
"HostComputer" 316 FALSE
"Predictor" 317 TRUE
"WhitePoint" 318 FALSE
"PrimaryChromaticities" 319 FALSE
"ColorMap" 320 TRUE
"HalftoneHints" 321 FALSE
"TileWidth" 322 TRUE
"TileLength" 323 TRUE
"TileOffsets" 324 TRUE
"TileByteCounts" 325 TRUE
"InkSet" 332 FALSE
"InkNames" 333 FALSE
"NumberOfInks" 334 FALSE
"DotRange" 336 FALSE
"TargetPrinter" 337 FALSE
"ExtraSamples" 338 TRUE
"SampleFormat" 339 FALSE
"SMinSampleValue" 340 FALSE
"SMaxSampleValue" 341 FALSE
"TransferRange" 342 FALSE
"JPEGTables" 347 TRUE
"JPEGProc" 512 TRUE
"JPEGInterchangeFormat" 513 TRUE
"JPEGInterchangeFormatLngth" 514 TRUE
"JPEGRestartInterval" 515 TRUE
"JPEGLosslessPredictors" 517 TRUE
"JPEGPointTransforms" 518 TRUE
"JPEGQTables" 519 TRUE
"JPEGDCTables" 520 TRUE
"JPEGACTables" 521 TRUE
"YCbCrCoefficients" 529 FALSE
"YCbCrSubSampling" 530 TRUE
"YCbCrPositioning" 531 FALSE
"ReferenceBlackWhite" 532 FALSE
"Copyright" 33432 FALSE
"IPTC/NAA" 33723 TRUE
"PhotoshopResources" 34377 FALSE
"ExifIFDPointer" 34665 TRUE
"GPSInfoIFDPointer" 34675 TRUE
1The tag is writable only with the IG_fltr_metad_update_file function.

TIFF Complex Data Tags

Some tags, which value is a complex data, can be passed in parsed form as following:

Name Id Type Value Type Value Value Length Read Only
<TagName> <TagId> LEVEL_START 0 NULL 0 TRUE
"TagType" <TagId> VALUE_ITEM UINT16 <TagType> 1 FALSE
"TagCount" <TagId> VALUE_ITEM UINT32 <TagCount> 1 FALSE
<Tag Value Block>: one or more metadata items that identify the tag value
<TagName> <TagId> LEVEL_END 0 NULL 0 TRUE

The <TagName> and <TagId> values are the tag name and identifier (available values see in the Table Photoshop Image Resource metadata structure, below). It is possible to use the tag identifier and value of nonstandard tag (user defined tag).

The <TagType> value is the standard TIFF tag type constant described in TIFF 6.0 specification.

Currently only TIFF tag with ID 34377, where Adobe Photoshop and some other TIFF writers save image recourses (IPTC data, resolution, some LUT etc.), is passed in this form. The <Tag Value Block> of these TIFF tag has structure described in the Table Photoshop Image Resource metadata structure below.

Photoshop Image Resource Metadata Structure

Name Id Type Value Type Value Value Length Read Only
"PhotoshopImageResource" <Res. Id> LEVEL_START 0 NULL 0 TRUE
"PhotoshopImageResourceSize" <Res. Id> VALUE_ITEM UINT16   1 TRUE
Resource data
"DATA" <Res. Id> VALUE_ITEM RAW_DATA   Variable FALSE
Or in case the data are parsed (currently it is happen only if the resource is IPTC data)
"IPTC" 0x1C00 LEVEL_START 0 NULL 0 TRUE
...
"IPTC" 0x1C00 LEVEL_END 0 NULL 0 TRUE
 
"PhotoshopImageResource" <Res. Id> LEVEL_END 0 NULL 0 TRUE

Where the <Res. Id> is the Adobe Photoshop image resource identifier (see Adobe Photoshop SDK).

IPTC PhotoshopImageResource identifier is 0x0404.

Callback Required for Writing TIFF Metadata Items

The value of TIFF metadata tags that are listed in the table below can be changed using LPAFT_IG_METAD_ITEM_SET_CB callback only:

Item Name Item Id
"XResolution" 282
"YResolution" 283
"ResolutionUnit" 296
"PageNumber" 297
"Software" 305
"DateTime" 306
"Artist" 315
"FillOrder" 266
"DocumentName" 269

All the rest of the TIFF metadata tags values can be written using LPAFT_IG_METAD_ITEM_ADD_CB callback only.