ImageGear for C and C++ on Windows v21.0 - Updated
User Guide / File Formats and Compressions / File Formats / Metadata Structures / TIFF Metadata Structure
In This Topic
    TIFF Metadata Structure
    In This Topic

    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.