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 |
FALSE |
"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 |
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.