As with all multipage image formats, ImageGear .NET uses separate metadata trees for TIFF document-level metadata and TIFF page-level metadata:
Name | Id | Type | Value Type | Value | Value Length | Ignored on save |
ByteOrder | 59936 | Leaf | UINT16 | 0x4949 or 0x4D4D | 1 | TRUE |
Identifier | 59937 | Leaf | UINT16 | 42 | 1 | TRUE |
TIFF page level metadata corresponds to a TIFF IFD.
Most of TIFF tags are passed through metadata callback as:
Name | Id | Type | Value Type | Value | Value Length | Ignored on save |
<TagName> | <TagId> | VALUE_ITEM | <ValueType> | <TagValue> | <TagCount> | <R.o.> |
The valid values of <TagName>, <TagId> and "Read Only" attributes are available in See Description of TIFF tags (ImGearTIFTagIDs). Table.
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 (ImGearNativeDataTypes) |
BYTE | UINT8 |
SBYTE | INT8 |
SHORT | UINT16 |
SSHORT | INT16 |
LONG | UINT32 |
SLONG | INT32 |
RATIONAL | RATIONAL_UINT32 |
SRATIONAL | RATIONAL_INT32 |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
ASCII | STRING |
UNDEFINED | AM_TID_RAW_DATA |
Item Name | Item Id | Ignored on save |
"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 |
"PhotoshopResources" | 34377 | FALSE |
"ExifIFDPointer" | 34665 | TRUE |
"GPSInfoIFDPointer" | 34675 | TRUE |
Some tags, whose value is a complex data, can be passed in parsed form as a tree. In this case, a single metadata item is replaced with a tree that uses one of the specialized metadata formats, such as Photoshop (PhotoshopImageResources) or IPTC.
ExifIFDPointer tag in a TIFF file points to an IFD which contains tags defined in the EXIF image file format specification. ImageGear replaces this tag with EXIF metadata tree.
EXIF metadata usually contains nested IFDs as well.
TIFF images can contain "SubIFDs" - nested sets of tags. A SubIFD usually contains a special version of image, such as a thumbnail, or a Raw image taken from a digital camera sensor.
ImageGear represents SubIFDs as subtrees of the root TIFF IFD.