As with all multipage image formats, ImageGear for .NET uses separate metadata trees for TIFF document-level metadata and TIFF page-level metadata:
- Document 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 - Page level metadata:
TIFF page level metadata corresponds to a TIFF IFD.
Tags
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.
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 (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 |
Description of TIFF tags (ImGearTIFTagIDs)
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 |
Please see file ImGearTIFTagIDs enum for the full list of TIFF Metadata Item Id constants. |
TIFF Complex Data Tags
Some tags, which 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.
EXIF metadata
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.
SubIFDs
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.