00001 #include <map> 00002 #include "pthread.h" 00003 00004 #include "TIFFTags.h" 00005 00006 namespace FCam { 00007 const TiffEntryInfo tiffEntryTypes[]={ 00009 { 00010 "Artist", 00011 // Person who created the image. 00012 315, 00013 TIFF_ASCII 00014 // Note: some older TIFF files used this tag for storing Copyright information. 00015 },{ 00016 "BitsPerSample", 00017 // Number of bits per component. 00018 258, 00019 TIFF_SHORT 00020 // N = SamplesPerPixel 00021 // Note that this field allows a different number of bits per component for each 00022 // component corresponding to a pixel. For example, RGB color data could use a 00023 // different number of bits per component for each of the three color planes. Most RGB 00024 // files will have the same number of BitsPerSample for each component. Even in this 00025 // case, the writer must write all three values. 00026 // Default = 1. See also SamplesPerPixel. 00027 // 00028 // From DNG Spec: 00029 // Supported values are from 8 to 32 bits/sample. The depth 00030 // must be the same for each sample if SamplesPerPixel is not 00031 // equal to 1. If BitsPerSample is not equal to 8 or 16 or 32, 00032 // then the bits must be packed into bytes using the TIFF 00033 // default FillOrder of 1 (big-endian), even if the TIFF file 00034 // itself uses little-endian byte order. 00035 },{ 00036 "CellLength", 00037 // The length of the dithering or halftoning matrix used to create a dithered or 00038 // halftoned bilevel file. 00039 265, 00040 TIFF_SHORT 00041 // N = 1 00042 // This field should only be present if Threshholding = 2 00043 // No default. See also Threshholding. 00044 },{ 00045 "CellWidth", 00046 // The width of the dithering or halftoning matrix used to create a dithered or 00047 // halftoned bilevel file 00048 264, 00049 TIFF_SHORT 00050 // N = 1 00051 // No default. See also Threshholding. 00052 },{ 00053 "ColorMap", 00054 // A color map for palette color images. 00055 32, 00056 TIFF_SHORT 00057 // N = 3 * (2**BitsPerSample) 00058 // This field defines a Red-Green-Blue color map (often called a lookup table) for 00059 // palette-color images. In a palette-color image, a pixel value is used to index into 00060 // an RGB lookup table. For example, a palette-color pixel having a value of 0 00061 // would be displayed according to the 0th Red, Green, Blue triplet. 00062 // In a TIFF ColorMap, all the Red values come first, followed by the Green values, 00063 // then the Blue values. The number of values for each color is 2**BitsPerSample. 00064 // Therefore, the ColorMap field for an 8-bit palette-color image would have 3 * 256 00065 // values. 00066 // The width of each value is 16 bits, as implied by the type of SHORT. 0 represents 00067 // the minimum intensity, and 65535 represents the maximum intensity. Black is 00068 // represented by 0,0,0, and white by 65535, 65535, 65535. 00069 // See also PhotometricInterpretation—palette color. 00070 // No default. ColorMap must be included in all palette-color images. 00071 },{ 00072 "Compression", 00073 // Compression scheme used on the image data. 00074 259, 00075 TIFF_SHORT 00076 // N = 1 00077 // 1 = No compression, but pack data into bytes as tightly as possible leaving no unused 00078 // bits except at the end of a row. 00079 // If Then the sample values are stored as an array of type: 00080 // BitsPerSample = 16 for all samples SHORT 00081 // BitsPerSample = 32 for all samples LONG 00082 // Otherwise BYTE 00083 // Each row is padded to the next BYTE/SHORT/LONG boundary, consistent with 00084 // the preceding BitsPerSample rule. 00085 // If the image data is stored as an array of SHORTs or LONGs, the byte ordering 00086 // must be consistent with that specified in bytes 0 and 1 of the TIFF file header. 00087 // Therefore, little-endian format files will have the least significant bytes preceding 00088 // the most significant bytes, while big-endian format files will have the opposite 00089 // order. 00090 // If the number of bits per component is not a power of 2, and you are willing to give up 00091 // some space for better performance, use the next higher power of 2. For example, if 00092 // your data can be represented in 6 bits, set BitsPerSample to 8 instead of 6, and then 00093 // convert the range of the values from [0,63] to [0,255]. 00094 // Rows must begin on byte boundaries. (SHORT boundaries if the data is stored as 00095 // SHORTs, LONG boundaries if the data is stored as LONGs). 00096 // Some graphics systems require image data rows to be word-aligned or double-word- 00097 // aligned, and padded to word-boundaries or double-word boundaries. Uncompressed 00098 // TIFF rows will need to be copied into word-aligned or double-word-aligned row 00099 // buffers before being passed to the graphics routines in these environments. 00100 // 2 = CCITT Group 3 1-Dimensional Modified Huffman run-length encoding. See 00101 // Section 10. BitsPerSample must be 1, since this type of compression is defined 00102 // only for bilevel images. 00103 // 32773 = PackBits compression, a simple byte-oriented run-length scheme. See Section 9 00104 // for details. 00105 // Data compression applies only to the image data, pointed to by StripOffsets. 00106 // Default = 1. 00107 // 00108 // From DNG Spec: 00109 // Two Compression tag values are supported: 00110 // Value = 1: Uncompressed data. 00111 // Value = 7: JPEG compressed data, either baseline DCT JPEG, or lossless JPEG compression. 00112 // If PhotometricInterpretation = 6 (YCbCr) and BitsPerSample 00113 // = 8/8/8, or if PhotometricInterpretation = 1 (BlackIsZero) 00114 // and BitsPerSample = 8, then the JPEG variant must be 00115 // baseline DCT JPEG. Otherwise, the JPEG variant must be 00116 // lossless Huffman JPEG. For lossless JPEG, the internal 00117 // width/length/components in the JPEG stream are not required 00118 // to match the strip or tile's width/length/components. Only 00119 // the total sample counts need to match. It is common for CFA 00120 // images to be encoded with a different width, length or 00121 // component count to allow the JPEG compression predictors to 00122 // work across like colors. 00123 },{ 00124 "Copyright", 00125 // Copyright notice. 00126 33432, 00127 TIFF_ASCII 00128 // Copyright notice of the person or organization that claims the copyright to the 00129 // image. The complete copyright statement should be listed in this field including 00130 // any dates and statements of claims. For example, “Copyright, John Smith, 19xx. 00131 // All rights reserved.” 00132 },{ 00133 "DateTime", 00134 // Date and time of image creation. 00135 306, 00136 TIFF_ASCII 00137 // N = 20 00138 // The format is: “YYYY:MM:DD HH:MM:SS”, with hours like those on a 24-hour 00139 // clock, and one space character between the date and the time. The length of the 00140 // string, including the terminating NUL, is 20 bytes. 00141 },{ 00142 "ExtraSamples", 00143 // Description of extra components. 00144 33, 00145 TIFF_SHORT 00146 // N = m 00147 // Specifies that each pixel has m extra components whose interpretation is defined 00148 // by one of the values listed below. When this field is used, the SamplesPerPixel 00149 // field has a value greater than the PhotometricInterpretation field suggests. 00150 // For example, full-color RGB data normally has SamplesPerPixel=3. If 00151 // SamplesPerPixel is greater than 3, then the ExtraSamples field describes the 00152 // meaning of the extra samples. If SamplesPerPixel is, say, 5 then ExtraSamples 00153 // will contain 2 values, one for each extra sample. 00154 // ExtraSamples is typically used to include non-color information, such as opacity, 00155 // in an image. The possible values for each item in the field's value are: 00156 // 0 = Unspecified data 00157 // 1 = Associated alpha data (with pre-multiplied color) 00158 // 2 = Unassociated alpha data 00159 // Associated alpha data is opacity information; it is fully described in Section 21. 00160 // Unassociated alpha data is transparency information that logically exists indepen- 00161 // dent of an image; it is commonly called a soft matte. Note that including both 00162 // unassociated Land associated alpha is undefined because associated alpha specifies 00163 // that color components are pre-multiplied by the alpha component, while 00164 // unassociated alpha specifies the opposite. 00165 // By convention, extra components that are present must be stored as the “last com- 00166 // ponents” in each pixel. For example, if SamplesPerPixel is 4 and there is 1 extra 00167 // component, then it is located in the last component location (SamplesPerPixel-1) 00168 // in each pixel. 00169 // Components designated as “extra” are just like other components in a pixel. In 00170 // particular, the size of such components is defined by the value of the 00171 // BitsPerSample field. 00172 // With the introduction of this field, TIFF readers must not assume a particular 00173 // SamplesPerPixel value based on the value of the PhotometricInterpretation field. 00174 // For example, if the file is an RGB file, SamplesPerPixel may be greater than 3. 00175 // The default is no extra samples. This field must be present if there are extra 00176 // samples. 00177 // See also SamplesPerPixel, AssociatedAlpha. 00178 },{ 00179 "FillOrder", 00180 // The logical order of bits within a byte. 00181 266, 00182 TIFF_SHORT 00183 // N = 1 00184 // 1 = pixels are arranged within a byte such that pixels with lower column values are 00185 // stored in the higher-order bits of the byte. 00186 // 1-bit uncompressed data example: Pixel 0 of a row is stored in the high-order bit 00187 // of byte 0, pixel 1 is stored in the next-highest bit, ..., pixel 7 is stored in the low- 00188 // order bit of byte 0, pixel 8 is stored in the high-order bit of byte 1, and so on. 00189 // CCITT 1-bit compressed data example: The high-order bit of the first compres- 00190 // sion code is stored in the high-order bit of byte 0, the next-highest bit of the first 00191 // compression code is stored in the next-highest bit of byte 0, and so on. 00192 // 2 = pixels are arranged within a byte such that pixels with lower column values are 00193 // stored in the lower-order bits of the byte. 00194 // We recommend that FillOrder=2 be used only in special-purpose applications. It 00195 // is easy and inexpensive for writers to reverse bit order by using a 256-byte lookup 00196 // table1 and the data is 00197 // either uncompressed or compressed using CCITT 1D or 2D compression, to 00198 // avoid potentially ambigous situations. 00199 // Support for FillOrder=2 is not required in a Baseline TIFF compliant reader 00200 // Default is FillOrder = 1. 00201 // FreeByteCounts 00202 // For each string of contiguous unused bytes in a TIFF file, the number of bytes in 00203 // the string. 00204 // Tag = 289 (121.H) 00205 // Type = LONG 00206 // Not recommended for general interchange. 00207 // See also FreeOffsets. 00208 },{ 00209 "FreeOffsets", 00210 // For each string of contiguous unused bytes in a TIFF file, the byte offset of the 00211 // string. 00212 288, 00213 TIFF_LONG 00214 // Not recommended for general interchange. 00215 // See also FreeByteCounts. 00216 },{ 00217 "GrayResponseCurve", 00218 // For grayscale data, the optical density of each possible pixel value. 00219 29, 00220 TIFF_SHORT 00221 // N = 2**BitsPerSample 00222 // The 0th value of GrayResponseCurve corresponds to the optical density of a pixel 00223 // having a value of 0, and so on. 00224 // This field may provide useful information for sophisticated applications, but it is 00225 // currently ignored by most TIFF readers. 00226 // See also GrayResponseUnit, PhotometricInterpretation. 00227 },{ 00228 "GrayResponseUnit", 00229 // The precision of the information contained in the GrayResponseCurve. 00230 29, 00231 TIFF_SHORT 00232 // N = 1 00233 // Because optical density is specified in terms of fractional numbers, this field is 00234 // necessary to interpret the stored integer information. For example, if 00235 // GrayScaleResponseUnits is set to 4 (ten-thousandths of a unit), and a 00236 // GrayScaleResponseCurve number for gray level 4 is 3455, then the resulting 00237 // actual value is 0.3455. 00238 // Optical densitometers typically measure densities within the range of 0.0 to 2.0. 00239 // 1 = Number represents tenths of a unit. 00240 // 2 = Number represents hundredths of a unit. 00241 // 3 = Number represents thousandths of a unit. 00242 // 4 = Number represents ten-thousandths of a unit. 00243 // 5 = Number represents hundred-thousandths of a unit. 00244 // Modifies GrayResponseCurve. 00245 // See also GrayResponseCurve. 00246 // For historical reasons, the default is 2. However, for greater accuracy, 3 is recom- 00247 // mended. 00248 },{ 00249 "HostComputer", 00250 // The computer and/or operating system in use at the time of image creation. 00251 316, 00252 TIFF_ASCII 00253 // See also Make, Model, Software. 00254 },{ 00255 "ImageDescription", 00256 // A string that describes the subject of the image. 00257 27, 00258 TIFF_ASCII 00259 // For example, a user may wish to attach a comment such as “1988 company pic- 00260 // nic” to an image. 00261 },{ 00262 "ImageLength", 00263 // The number of rows of pixels in the image. 00264 257, 00265 TIFF_LONG // or SHORT 00266 // N = 1 00267 // No default. See also ImageWidth. 00268 },{ 00269 "ImageWidth", 00270 // The number of columns in the image, i.e., the number of pixels per row. 00271 256, 00272 TIFF_LONG // or SHORT 00273 // N = 1 00274 // No default. See also ImageLength. 00275 },{ 00276 "Make", 00277 // The scanner manufacturer. 00278 271, 00279 TIFF_ASCII 00280 // Manufacturer of the scanner, video digitizer, or other type of equipment used to 00281 // generate the image. Synthetic images should not include this field. 00282 // See also Model, Software. 00283 },{ 00284 "MaxSampleValue", 00285 // The maximum component value used. 00286 281, 00287 TIFF_SHORT 00288 // N = SamplesPerPixel 00289 // This field is not to be used to affect the visual appearance of an image when it is 00290 // displayed or printed. Nor should this field affect the interpretation of any other 00291 // field; it is used only for statistical purposes. 00292 // Default is 2**(BitsPerSample) - 1. 00293 },{ 00294 "MinSampleValue", 00295 // The minimum component value used. 00296 280, 00297 TIFF_SHORT 00298 // N = SamplesPerPixel 00299 // See also MaxSampleValue. 00300 // Default is 0. 00301 },{ 00302 "Model", 00303 // The scanner model name or number. 00304 272, 00305 TIFF_ASCII 00306 // The model name or number of the scanner, video digitizer, or other type of equip- 00307 // ment used to generate the image. 00308 // See also Make, Software. 00309 },{ 00310 "NewSubfileType", 00311 // A general indication of the kind of data contained in this subfile. 00312 254, 00313 TIFF_LONG 00314 // N = 1 Replaces the old SubfileType field, due to 00315 // limitations in the definition of that field. 00316 // NewSubfileType is mainly useful when there are multiple 00317 // subfiles in a single TIFF file. This field is made up of a 00318 // set of 32 flag bits. Unused bits are expected to be 0. Bit 00319 // 0 is the low-order bit. Currently defined values are: Bit 00320 // 0 is 1 if the image is a reduced-resolution version of 00321 // another image in this TIFF file; else the bit is 0. Bit 1 00322 // is 1 if the image is a single page of a multi-page image 00323 // (see the PageNumber field description); else the bit is 0. 00324 // Bit 2 is 1 if the image defines a transparency mask for 00325 // another image in this TIFF file. The 00326 // PhotometricInterpretation value must be 4, designating a 00327 // transparency mask. These values are defined as bit flags 00328 // because they are independent of each other. Default is 0. 00329 // 00330 // From DNG Spec: In DNG versions earlier than 1.2.0.0, full 00331 // resolution raw images should use NewSubFileType equal to 00332 // 0. Rendered previews or reduced resolution versions of raw 00333 // images should use NewSubFileType equal to 1. DNG 1.2.0.0 00334 // allows a new value for NewSubFileType equal to 00335 // 10001.H. This value, used for alternative or non-primary 00336 // rendered previews, allows for multiple renderings (not just 00337 // multiple sizes of a single rendering) to be stored in a DNG 00338 // file. DNG reading software that displays a preview for a 00339 // DNG file should, by default, display a preview from an IFD 00340 // with NewSubFileType equal to 1. Alternative renderings 00341 // should only be displayed if requested by the user. 00342 00343 },{ 00344 "Orientation", 00345 // The orientation of the image with respect to the rows and columns. 00346 274, 00347 TIFF_SHORT 00348 // N = 1 00349 // 1 = The 0th row represents the visual top of the image, and the 0th column represents 00350 // the visual left-hand side. 00351 // 2 = The 0th row represents the visual top of the image, and the 0th column represents 00352 // the visual right-hand side. 00353 // 3 = The 0th row represents the visual bottom of the image, and the 0th column repre- 00354 // sents the visual right-hand side. 00355 // 4 = The 0th row represents the visual bottom of the image, and the 0th column repre- 00356 // sents the visual left-hand side. 00357 // 5 = The 0th row represents the visual left-hand side of the image, and the 0th column 00358 // represents the visual top. 00359 // 6 = The 0th row represents the visual right-hand side of the image, and the 0th column 00360 // represents the visual top. 00361 // 7 = The 0th row represents the visual right-hand side of the image, and the 0th column 00362 // represents the visual bottom. 00363 // 8 = The 0th row represents the visual left-hand side of the image, and the 0th column 00364 // represents the visual bottom. 00365 // Default is 1. 00366 // Support for orientations other than 1 is not a Baseline TIFF requirement. 00367 // 00368 // From DNG spec: 00369 // Orientation is a required tag for DNG. With the Orientation 00370 // tag present, file browsers can perform lossless rotation of 00371 // DNG files by modifying a single byte of the file. DNG 00372 // readers should support all possible orientations, including 00373 // mirrored orientations. Note that the mirrored orientations 00374 // are not allowed by the TIFF-EP specification, so writers 00375 // should not use them if they want their files be compatible 00376 // with both specifications. 00377 },{ 00378 "PhotometricInterpretation", 00379 // The color space of the image data. 00380 262, 00381 TIFF_SHORT 00382 // N = 1 00383 // 0 = WhiteIsZero. For bilevel and grayscale images: 0 is imaged as white. 00384 // 2**BitsPerSample-1 is imaged as black. This is the normal value for Compres- 00385 // sion=2. 00386 // 1 = BlackIsZero. For bilevel and grayscale images: 0 is imaged as black. 00387 // 2**BitsPerSample-1 is imaged as white. If this value is specified for Compres- 00388 // sion=2, the image should display and print reversed. 00389 // 2 = RGB. In the RGB model, a color is described as a combination of the three pri- 00390 // mary colors of light (red, green, and blue) in particular concentrations. For each of 00391 // the three components, 0 represents minimum intensity, and 2**BitsPerSample - 1 00392 // represents maximum intensity. Thus an RGB value of (0,0,0) represents black, 00393 // and (255,255,255) represents white, assuming 8-bit components. For 00394 // PlanarConfiguration = 1, the components are stored in the indicated order: first 00395 // Red, then Green, then Blue2, the StripOffsets for the 00396 // component planes are stored in the indicated order: first the Red component plane 00397 // StripOffsets, then the Green plane StripOffsets, then the Blue plane StripOffsets. 00398 // 3= Palette color. In this model, a color is described with a single component. The 00399 // value of the component is used as an index into the red, green and blue curves in 00400 // the ColorMap field to retrieve an RGB triplet that defines the color. When 00401 // PhotometricInterpretation=3 is used, ColorMap must be present and 00402 // SamplesPerPixel must be 1. 00403 // 4 = Transparency Mask. 00404 // This means that the image is used to define an irregularly shaped region of another 00405 // image in the same TIFF file. SamplesPerPixel and BitsPerSample must be 1. 00406 // PackBits compression is recommended. The 1-bits define the interior of the re- 00407 // gion; the 0-bits define the exterior of the region. 00408 // A reader application can use the mask to determine which parts of the image to 00409 // display. Main image pixels that correspond to 1-bits in the transparency mask are 00410 // imaged to the screen or printer, but main image pixels that correspond to 0-bits in 00411 // the mask are not displayed or printed. 00412 // The image mask is typically at a higher resolution than the main image, if the 00413 // main image is grayscale or color so that the edges can be sharp. 00414 // There is no default for PhotometricInterpretation, and it is required. Do not rely 00415 // on applications defaulting to what you want. 00416 // 00417 // From DNG Spec: 00418 00419 // The following values are supported for thumbnail and preview IFDs only: 00420 // 1 = BlackIsZero. Assumed to be in a gamma 2.2 color space, unless otherwise specified using PreviewColorSpace tag. 00421 // 2 = RGB. Assumed to be in the sRGB color space, unless otherwise specified using the PreviewColorSpace tag. 00422 // 6 = YCbCr. Used for JPEG encoded preview images. 00423 // The following values are supported for the raw IFD, and are assumed to be the camera's native color space: 00424 // 32803 = CFA (Color Filter Array). 00425 // 34892 = LinearRaw. 00426 // The CFA PhotometricInterpretation value is documented in 00427 // the TIFF-EP specification. Its use requires the use of the 00428 // CFARepeatPatternDim and CFAPattern tags in the same 00429 // IFD. The origin of the repeating CFA pattern is the 00430 // top-left corner of the ActiveArea rectangle. The LinearRaw 00431 // PhotometricInterpretation value is intended for use by 00432 // cameras that do not use color filter arrays, but instead 00433 // capture all color components at each pixel. It can also be 00434 // used for CFA data that has already been de-mosaiced. The 00435 // LinearRaw value can be used in reduced resolution IFDs, 00436 // even if the raw IFD uses the CFA PhotometricInterpretation 00437 // value. 00438 },{ 00439 "PlanarConfiguration", 00440 // How the components of each pixel are stored. 00441 284, 00442 TIFF_SHORT 00443 // N = 1 00444 // 1 = Chunky format. The component values for each pixel are stored contiguously. 00445 // The order of the components within the pixel is specified by 00446 // PhotometricInterpretation. For example, for RGB data, the data is stored as 00447 // RGBRGBRGB… 00448 // 2 = Planar format. The components are stored in separate “component planes.” The 00449 // values in StripOffsets and StripByteCounts are then arranged as a 2-dimensional 00450 // array, with SamplesPerPixel rows and StripsPerImage columns. (All of the col- 00451 // umns for row 0 are stored first, followed by the columns of row 1, and so on.) 00452 // PhotometricInterpretation describes the type of data stored in each component 00453 // plane. For example, RGB data is stored with the Red components in one compo- 00454 // nent plane, the Green in another, and the Blue in another. 00455 // PlanarConfiguration=2 is not currently in widespread use and it is not recom- 00456 // mended for general interchange. It is used as an extension and Baseline TIFF 00457 // readers are not required to support it. 00458 // If SamplesPerPixel is 1, PlanarConfiguration is irrelevant, and need not be in- 00459 // cluded. 00460 // If a row interleave effect is desired, a writer might write out the data as 00461 // PlanarConfiguration=2—separate sample planes—but break up the planes into 00462 // multiple strips (one row per strip, perhaps) and interleave the strips. 00463 // Default is 1. See also BitsPerSample, SamplesPerPixel. 00464 },{ 00465 "ResolutionUnit", 00466 // The unit of measurement for XResolution and YResolution. 00467 29, 00468 TIFF_SHORT 00469 // N = 1 00470 // To be used with XResolution and YResolution. 00471 // 1 = No absolute unit of measurement. Used for images that may have a non-square 00472 // aspect ratio, but no meaningful absolute dimensions. 00473 // The drawback of ResolutionUnit=1 is that different applications will import the image 00474 // at different sizes. Even if the decision is arbitrary, it might be better to use dots per 00475 // inch or dots per centimeter, and to pick XResolution and YResolution so that the 00476 // aspect ratio is correct and the maximum dimension of the image is about four inches 00477 // (the “four” is arbitrary.) 00478 // 2 = Inch. 00479 // 3 = Centimeter. 00480 // Default is 2. 00481 },{ 00482 "RowsPerStrip", 00483 // The number of rows per strip. 00484 278, 00485 TIFF_LONG // or SHORT 00486 // N = 1 00487 // TIFF image data is organized into strips for faster random access and efficient I/O 00488 // buffering. 00489 // RowsPerStrip and ImageLength together tell us the number of strips in the entire 00490 // image. The equation is: 00491 // StripsPerImage = floor ((ImageLength + RowsPerStrip - 1) / RowsPerStrip). 00492 // StripsPerImage is not a field. It is merely a value that a TIFF reader will want to 00493 // compute because it specifies the number of StripOffsets and StripByteCounts for the 00494 // image. 00495 // Note that either SHORT or LONG values can be used to specify RowsPerStrip. 00496 // SHORT values may be used for small TIFF files. It should be noted, however, that 00497 // earlier TIFF specification revisions required LONG values and that some software 00498 // may not accept SHORT values. 00499 // The default is 2**32 - 1, which is effectively infinity. That is, the entire image is 00500 // one strip. 00501 // Use of a single strip is not recommended. Choose RowsPerStrip such that each strip is 00502 // about 8K bytes, even if the data is not compressed, since it makes buffering simpler 00503 // for readers. The “8K” value is fairly arbitrary, but seems to work well. 00504 // See also ImageLength, StripOffsets, StripByteCounts, TileWidth, TileLength, 00505 // TileOffsets, TileByteCounts. 00506 },{ 00507 "SamplesPerPixel", 00508 // The number of components per pixel. 00509 277, 00510 TIFF_SHORT 00511 // N = 1 00512 // SamplesPerPixel is usually 1 for bilevel, grayscale, and palette-color images. 00513 // SamplesPerPixel is usually 3 for RGB images. 00514 // Default = 1. See also BitsPerSample, PhotometricInterpretation, ExtraSamples. 00515 },{ 00516 "Software", 00517 // Name and version number of the software package(s) used to create the image. 00518 305, 00519 TIFF_ASCII 00520 // See also Make, Model. 00521 },{ 00522 "StripByteCounts", 00523 // For each strip, the number of bytes in the strip after compression. 00524 279, 00525 TIFF_LONG // or SHORT, but make sure to write LONG 00526 // N = StripsPerImage for PlanarConfiguration equal to 1. 00527 // = SamplesPerPixel * StripsPerImage for PlanarConfiguration equal to 2 00528 // This tag is required for Baseline TIFF files. 00529 // No default. 00530 // See also StripOffsets, RowsPerStrip, TileOffsets, TileByteCounts. 00531 },{ 00532 "StripOffsets", 00533 // For each strip, the byte offset of that strip. 00534 273, 00535 TIFF_LONG // or SHORT, but make sure to write LONG 00536 // N = StripsPerImage for PlanarConfiguration equal to 1. 00537 // = SamplesPerPixel * StripsPerImage for PlanarConfiguration equal to 2 00538 // The offset is specified with respect to the beginning of the TIFF file. Note that this 00539 // implies that each strip has a location independent of the locations of other strips. 00540 // This feature may be useful for editing applications. This required field is the only 00541 // way for a reader to find the image data. (Unless TileOffsets is used; see 00542 // TileOffsets.) 00543 // Note that either SHORT or LONG values may be used to specify the strip offsets. 00544 // SHORT values may be used for small TIFF files. It should be noted, however, that 00545 // earlier TIFF specifications required LONG strip offsets and that some software 00546 // may not accept SHORT values. 00547 // For maximum compatibility with operating systems such as MS-DOS and Win- 00548 // dows, the StripOffsets array should be less than or equal to 64K bytes in length, 00549 // and the strips themselves, in both compressed and uncompressed forms, should 00550 // not be larger than 64K bytes. 00551 // No default. See also StripByteCounts, RowsPerStrip, TileOffsets, 00552 // TileByteCounts. 00553 },{ 00554 "SubfileType", 00555 // A general indication of the kind of data contained in this subfile. 00556 255, 00557 TIFF_SHORT 00558 // N = 1 00559 // Currently defined values are: 00560 // 1 = full-resolution image data 00561 // 2 = reduced-resolution image data 00562 // 3 = a single page of a multi-page image (see the PageNumber field description). 00563 // Note that several image types may be found in a single TIFF file, with each subfile 00564 // described by its own IFD. 00565 // No default. 00566 // This field is deprecated. The NewSubfileType field should be used instead. 00567 },{ 00568 "Threshholding", 00569 // For black and white TIFF files that represent shades of gray, the technique used to 00570 // convert from gray to black and white pixels. 00571 263, 00572 TIFF_SHORT 00573 // N = 1 00574 // 1 = No dithering or halftoning has been applied to the image data. 00575 // 2 = An ordered dither or halftone technique has been applied to the image data. 00576 // 3 = A randomized process such as error diffusion has been applied to the image data. 00577 // Default is Threshholding = 1. See also CellWidth, CellLength. 00578 },{ 00579 "XResolution", 00580 // The number of pixels per ResolutionUnit in the ImageWidth direction. 00581 282, 00582 TIFF_RATIONAL 00583 // N = 1 00584 // It is not mandatory that the image be actually displayed or printed at the size implied 00585 // by this parameter. It is up to the application to use this information as it wishes. 00586 // No default. See also YResolution, ResolutionUnit. 00587 },{ 00588 "YResolution", 00589 // The number of pixels per ResolutionUnit in the ImageLength direction. 00590 283, 00591 TIFF_RATIONAL 00592 // N = 1 00593 // No default. See also XResolution, ResolutionUnit. 00594 // 00595 }, 00597 { 00598 "SubIFDs", 00599 330, 00600 TIFF_IFD // or “LONG”. “IFD” is preferred. 00601 // Note: When writing, TIFF_IFD tags are always saved as LONG for compatibility with dcraw and dcraw-derived applications. 00602 // N = number of child IFDs 00603 // Each value is an offset (from the beginning of the TIFF file, as always) to a child 00604 // IFD. Child images provide extra information for the parent image—such as a 00605 // subsampled version of the parent image. 00606 // TIFF data type 13, “IFD,” is otherwise identical to LONG, but is only used to 00607 // point to other valid IFDs. 00608 }, 00610 { 00611 "TileWidth", 00612 322, 00613 TIFF_SHORT // or LONG 00614 // N = 1 00615 // The tile width in pixels. This is the number of columns in each tile. 00616 // Assuming integer arithmetic, three computed values that are useful in the follow- 00617 // ing field descriptions are: 00618 // TilesAcross = (ImageWidth + TileWidth - 1) / TileWidth 00619 // TilesDown = (ImageLength + TileLength - 1) / TileLength 00620 // TilesPerImage = TilesAcross * TilesDown 00621 // These computed values are not TIFF fields; they are simply values determined by 00622 // the ImageWidth, TileWidth, ImageLength, and TileLength fields. 00623 // TileWidth and ImageWidth together determine the number of tiles that span the 00624 // width of the image (TilesAcross). TileLength and ImageLength together deter- 00625 // mine the number of tiles that span the length of the image (TilesDown). 00626 // We recommend choosing TileWidth and TileLength such that the resulting tiles 00627 // are about 4K to 32K bytes before compression. This seems to be a reasonable 00628 // value for most applications and compression schemes. 00629 // TileWidth must be a multiple of 16. This restriction improves performance in 00630 // some graphics environments and enhances compatibility with compression 00631 // schemes such as JPEG. 00632 // Tiles need not be square. 00633 // Note that ImageWidth can be less than TileWidth, although this means that the 00634 // tiles are too large or that you are using tiling on really small images, neither of 00635 // which is recommended. The same observation holds for ImageLength and 00636 // TileLength. 00637 // No default. See also TileLength, TileOffsets, TileByteCounts. 00638 },{ 00639 "TileLength", 00640 323, 00641 TIFF_SHORT // or LONG 00642 // N = 1 00643 // The tile length (height) in pixels. This is the number of rows in each tile. 00644 // TileLength must be a multiple of 16 for compatibility with compression schemes 00645 // such as JPEG. 00646 // Replaces RowsPerStrip in tiled TIFF files. 00647 // No default. See also TileWidth, TileOffsets, TileByteCounts. 00648 },{ 00649 "TileOffsets", 00650 324, 00651 TIFF_LONG 00652 // N = TilesPerImage for PlanarConfiguration = 1 00653 // = SamplesPerPixel * TilesPerImage for PlanarConfiguration = 2 00654 // For each tile, the byte offset of that tile, as compressed and stored on disk. The 00655 // offset is specified with respect to the beginning of the TIFF file. Note that this 00656 // implies that each tile has a location independent of the locations of other tiles. 00657 // Offsets are ordered left-to-right and top-to-bottom. For PlanarConfiguration = 2, 00658 // the offsets for the first component plane are stored first, followed by all the offsets 00659 // for the second component plane, and so on. 00660 // No default. See also TileWidth, TileLength, TileByteCounts. 00661 },{ 00662 "TileByteCounts", 00663 325, 00664 TIFF_SHORT // or LONG 00665 // N = TilesPerImage for PlanarConfiguration = 1 00666 // = SamplesPerPixel * TilesPerImage for PlanarConfiguration = 2 00667 // For each tile, the number of (compressed) bytes in that tile. 00668 // See TileOffsets for a description of how the byte counts are ordered. 00669 // No default. See also TileWidth, TileLength, TileOffsets. 00670 }, 00671 // TIFF/EP Tags (knowledge inferred from many places, ISO spec costs money) 00672 { 00673 "TIFF/EPStandardID", 00674 37398, 00675 TIFF_BYTE, 00676 // Note: Below inferred from various sources 00677 // Count: 00678 // 4 00679 // Value: 00680 // See below 00681 // Default: 00682 // Required tag 00683 // Usage: 00684 // IFD 0 00685 // Description: 00686 // Should always be 1 0 0 0 00687 }, 00688 { 00689 "CFAPattern", 00690 33422, 00691 TIFF_BYTE 00692 // Count Number of pixels in a single CFA pattern repetition 00693 // Default None 00694 // Description 00695 // Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. 00696 // It does not apply to all sensing methods. 00697 // The value consists of an id code for every pixel in that pattern. The pattern shape is given by CFARepeatPatternDim, the pixels 00698 // are listed left-to-right, top-to-bottom, with the first pattern starting at the top-left corner of the sensor. 00699 // This identification code can be: 00700 // 0 = Red 00701 // 1 = Green 00702 // 2 = Blue 00703 // 3 = Cyan 00704 // 4 = Magenta 00705 // 5 = Yellow 00706 // 6 = White 00707 }, { 00708 "CFARepeatPatternDim", 00709 33421, 00710 TIFF_SHORT 00711 // Count 2 00712 // Default ? 00713 // Description 00714 // (inferred from Boris's saving code, web info - Eddy) 00715 // Dimensions of the CFA repeating pattern, as two shorts. The colors that make up the pattern are given by CFAPattern 00716 }, 00718 { 00719 "DNGVersion", 00720 50706, 00721 TIFF_BYTE, 00722 // Count: 00723 // 4 00724 // Value: 00725 // See below 00726 // Default: 00727 // Required tag 00728 // Usage: 00729 // IFD 0 00730 // Description: 00731 // This tag encodes the DNG four-tier version number. For 00732 // files compliant with this version of the DNG specification 00733 // (1.2.0.0), this tag should contain the bytes: 1, 2, 0, 0. 00734 },{ 00735 "DNGBackwardVersion", 00736 50707, 00737 TIFF_BYTE, 00738 // Count: 00739 // 4 00740 // Value: 00741 // See below 00742 // Default: 00743 // DNGVersion with the last two bytes set to zero. 00744 // Usage: 00745 // IFD 0 00746 // Description: 00747 // This tag specifies the oldest version of the Digital 00748 // Negative specification for which a file is 00749 // compatible. Readers should not attempt to read a file if 00750 // this tag specifies a version number that is higher than the 00751 // version number of the specification the reader was based 00752 // on. In addition to checking the version tags, readers 00753 // should, for all tags, check the types, counts, and values, 00754 // to verify it is able to correctly read the file. For more 00755 // information on compatibility with previous DNG versions, 00756 // see Appendix A: Compatibility with Previous Versions. 00757 },{ 00758 "UniqueCameraModel", 00759 50708, 00760 TIFF_ASCII, 00761 // Count: 00762 // String length including null 00763 // Value: 00764 // Null terminated string 00765 // Default: 00766 // Required tag 00767 // Usage: 00768 // IFD 0 00769 // Description: 00770 // UniqueCameraModel defines a unique, non-localized name for 00771 // the camera model that created the image in the raw 00772 // file. This name should include the manufacturer's name to 00773 // avoid conflicts, and should not be localized, even if the 00774 // camera name itself is localized for different markets (see 00775 // LocalizedCameraModel). 00776 // This string may be used by reader software to index into 00777 // per-model preferences and replacement profiles. Examples 00778 // of unique model names are: 00779 // •"Canon EOS 300D" 00780 // •"Fujifilm FinePix S2Pro" 00781 // •"Kodak ProBack645" 00782 // •"Minolta DiMAGE A1" 00783 // •"Nikon D1X" 00784 // •"Olympus C-5050Z" 00785 // •"Pentax *istD" 00786 // •"Sony F828" 00787 },{ 00788 "LocalizedCameraModel", 00789 50709, 00790 TIFF_ASCII //or BYTE, 00791 // Count: 00792 // Byte count including null 00793 // Value: 00794 // Null terminated UTF-8 encoded Unicode string 00795 // Default: 00796 // Same as UniqueCameraModel 00797 // Usage: 00798 // IFD 0 00799 // Description: 00800 // Similar to the UniqueCameraModel field, except the name can 00801 // be localized for different markets to match the 00802 // localization of the camera name. 00803 },{ 00804 "CFAPlaneColor", 00805 50710, 00806 TIFF_BYTE, 00807 // Count: 00808 // ColorPlanes 00809 // Value: 00810 // See below 00811 // Default: 00812 // 0, 1, 2 (red, green, blue) 00813 // Usage: 00814 // Raw IFD 00815 // Description: 00816 // CFAPlaneColor provides a mapping between the values in the 00817 // CFAPattern tag and the plane numbers in LinearRaw 00818 // space. This is a required tag for non-RGB CFA images 00819 },{ 00820 "CFALayout", 00821 50711, 00822 TIFF_SHORT, 00823 // Count: 00824 // 1 00825 // Value: 00826 // See below 00827 // Default: 00828 // 1 00829 // Usage: 00830 // Raw IFD 00831 // Description: 00832 // CFALayout describes the spatial layout of the CFA. The currently defined values are: 00833 // 1 = Rectangular (or square) layout 00834 // 2 = Staggered layout A: even columns are offset down by 1/2 row 00835 // 3 = Staggered layout B: even columns are offset up by 1/2 row 00836 // 4 = Staggered layout C: even rows are offset right by 1/2 column 00837 // 5 = Staggered layout D: even rows are offset left by 1/2 column 00838 // 6 = Staggered layout E: even rows are offset up by 1/2 row, even columns are offset left by 1/2 column 00839 // 7 = Staggered layout F: even rows are offset up by 1/2 row, even columns are offset right by 1/2 column 00840 // 8 = Staggered layout G: even rows are offset down by 1/2 row, even columns are offset left by 1/2 column 00841 // 9 = Staggered layout H: even rows are offset down by 1/2 row, even columns are offset right by 1/2 column 00842 // Note that for the purposes of this tag, rows and columns are numbered starting with one. 00843 // Layout values 6 through 9 were added with DNG version 1.3.0.0. 00844 },{ 00845 "LinearizationTable", 00846 50712, 00847 TIFF_SHORT, 00848 // Count: 00849 // N 00850 // Value: 00851 // See below 00852 // Default: 00853 // Identity table (0, 1, 2, 3, etc.) 00854 // Usage: 00855 // Raw IFD 00856 // Description: 00857 // LinearizationTable describes a lookup table that maps 00858 // stored values into linear values. This tag is typically 00859 // used to increase compression ratios by storing the raw data 00860 // in a non-linear, more visually uniform space with fewer 00861 // total encoding levels. If SamplesPerPixel is not equal to 00862 // one, this single table applies to all the samples for each 00863 // pixel. See Chapter 5, “Mapping Raw Values to Linear 00864 // Reference Values” on page 65 for details of the processing 00865 // model. 00866 },{ 00867 "BlackLevelRepeatDim", 00868 50713, 00869 TIFF_SHORT, 00870 // Count: 00871 // 2 00872 // Value: 00873 // Value: 0: BlackLevelRepeatRows 00874 // Value: 1: BlackLevelRepeatCols 00875 // Default: 00876 // 1, 1 00877 // Usage: 00878 // Raw IFD 00879 // Description: 00880 // This tag specifies repeat pattern size for the BlackLevel tag. 00881 },{ 00882 "BlackLevel", 00883 50714, 00884 TIFF_SHORT // or LONG or RATIONAL, 00885 // Count: 00886 // BlackLevelRepeatRows * BlackLevelRepeatCols * SamplesPerPixel 00887 // Value: 00888 // See below 00889 // Default: 00890 // 0 00891 // Usage: 00892 // Raw IFD 00893 // Description: 00894 // This tag specifies the zero light (a.k.a. thermal black or 00895 // black current) encoding level, as a repeating pattern. The 00896 // origin of this pattern is the top-left corner of the 00897 // ActiveArea rectangle. The values are stored in 00898 // row-column-sample scan order. See Chapter 5, “Mapping Raw 00899 // Values to Linear Reference Values” on page 65 for details 00900 // of the processing model. 00901 },{ 00902 "BlackLevelDeltaH", 00903 50715, 00904 TIFF_SRATIONAL, 00905 // Count: 00906 // ActiveArea width 00907 // Value: 00908 // See below 00909 // Default: 00910 // All zeros 00911 // Usage: 00912 // Raw IFD 00913 // Description: 00914 // If the zero light encoding level is a function of the image 00915 // column, BlackLevelDeltaH specifies the difference between 00916 // the zero light encoding level for each column and the 00917 // baseline zero light encoding level. If SamplesPerPixel is 00918 // not equal to one, this single table applies to all the 00919 // samples for each pixel. See Chapter 5, “Mapping Raw Values 00920 // to Linear Reference Values” on page 65 for details of the 00921 // processing model. 00922 },{ 00923 "BlackLevelDeltaV", 00924 50716, 00925 TIFF_SRATIONAL, 00926 // Count: 00927 // ActiveArea length 00928 // Value: 00929 // See below 00930 // Default: 00931 // All zeros 00932 // Usage: 00933 // Raw IFD 00934 // Description: 00935 // If the zero light encoding level is a function of the image 00936 // row, this tag specifies the difference between the zero 00937 // light encoding level for each row and the baseline zero 00938 // light encoding level. If SamplesPerPixel is not equal to 00939 // one, this single table applies to all the samples for each 00940 // pixel. See Chapter 5, “Mapping Raw Values to Linear 00941 // Reference Values” on page 65 for details of the processing 00942 // model. 00943 },{ 00944 "WhiteLevel", 00945 50717, 00946 TIFF_SHORT //or LONG, 00947 // Count: 00948 // SamplesPerPixel 00949 // Value: 00950 // See below 00951 // Default: 00952 // (2 ** BitsPerSample) - 1 00953 // Usage: 00954 // Raw IFD 00955 // Description: 00956 // This tag specifies the fully saturated encoding level for 00957 // the raw sample values. Saturation is caused either by the 00958 // sensor itself becoming highly non-linear in response, or by 00959 // the camera's analog to digital converter clipping. See 00960 // Chapter 5, “Mapping Raw Values to Linear Reference Values” 00961 // on page 65 for details of the processing model. 00962 },{ 00963 "DefaultScale", 00964 50718, 00965 TIFF_RATIONAL, 00966 // Count: 00967 // 2 00968 // Value: 00969 // Value: 0: DefaultScaleH 00970 // Value: 1: DefaultScaleV 00971 // Default: 00972 // 1.0, 1.0 00973 // Usage: 00974 // Raw IFD 00975 // Description: 00976 // DefaultScale is required for cameras with non-square 00977 // pixels. It specifies the default scale factors for each 00978 // direction to convert the image to square pixels. Typically 00979 // these factors are selected to approximately preserve total 00980 // pixel count. For CFA images that use CFALayout equal to 2, 00981 // 3, 4, or 5, such as the Fujifilm SuperCCD, these two values 00982 // should usually differ by a factor of 2.0. 00983 },{ 00984 "BestQualityScale", 00985 50780, 00986 TIFF_RATIONAL, 00987 // Count: 00988 // 1 00989 // Value: 00990 // see below 00991 // Default: 00992 // 1.0 00993 // Usage: 00994 // Raw IFD 00995 // Description: 00996 // For some cameras, the best possible image quality is not 00997 // achieved by preserving the total pixel count during 00998 // conversion. For example, Fujifilm SuperCCD images have 00999 // maximum detail when their total pixel count is doubled. 01000 // This tag specifies the amount by which the values of the 01001 // DefaultScale tag need to be multiplied to achieve the best 01002 // quality image size. 01003 },{ 01004 "DefaultCropOrigin", 01005 50719, 01006 TIFF_SHORT //or LONG or RATIONAL, 01007 // Count: 01008 // 2 01009 // Value: 01010 // Value: 0: DefaultCropOriginH 01011 // Value: 1: DefaultCropOriginV 01012 // Default: 01013 // 0, 0 01014 // Usage: 01015 // Raw IFD 01016 // Description: 01017 // Raw images often store extra pixels around the edges of the 01018 // final image. These extra pixels help prevent interpolation 01019 // artifacts near the edges of the final image. 01020 // Default:CropOrigin specifies the origin of the final image 01021 // area, in raw image coordinates (i.e., before the 01022 // DefaultScale has been applied), relative to the top-left 01023 // corner of the ActiveArea rectangle. 01024 },{ 01025 "DefaultCropSize", 01026 50720, 01027 TIFF_SHORT // or LONG or RATIONAL, 01028 // Count: 01029 // 2 01030 // Value: 01031 // Value: 0: DefaultCropSizeH 01032 // Value: 1: DefaultCropSizeV 01033 // Default: 01034 // ImageWidth, ImageLength 01035 // Usage: 01036 // Raw IFD 01037 // Description: 01038 // Raw images often store extra pixels around the edges of the 01039 // final image. These extra pixels help prevent interpolation 01040 // artifacts near the edges of the final image. 01041 // Default:CropSize specifies the size of the final image 01042 // area, in raw image coordinates (i.e., before the 01043 // DefaultScale has been applied). 01044 },{ 01045 "CalibrationIlluminant1", 01046 50778, 01047 TIFF_SHORT, 01048 // Count: 01049 // 1 01050 // Value: 01051 // See below 01052 // Default: 01053 // 0 (unknown) 01054 // Usage: 01055 // IFD 0 or Camera Profile IFD 01056 // Description: 01057 // The illuminant used for the first set of color calibration 01058 // tags. The legal values for this tag are the same as the 01059 // legal values for the LightSource EXIF tag. See Chapter 6, 01060 // “Mapping Camera Color Space to CIE XYZ Space” on page 67 01061 // for details of the color-processing model. 01062 },{ 01063 "CalibrationIlluminant2", 01064 50779, 01065 TIFF_SHORT, 01066 // Count: 01067 // 1 01068 // Value: 01069 // See below 01070 // Default: 01071 // None 01072 // Usage: 01073 // IFD 0 or Camera Profile IFD 01074 // Description: 01075 // The illuminant used for an optional second set of color 01076 // calibration tags. The legal values for this tag are the 01077 // same as the legal values for the CalibrationIlluminant1 01078 // tag; however, if both are included, neither is allowed to 01079 // have a value of 0 (unknown). See Chapter 6, “Mapping 01080 // Camera Color Space to CIE XYZ Space” on page 67 for details 01081 // of the color-processing model. 01082 },{ 01083 "ColorMatrix1", 01084 50721, 01085 TIFF_SRATIONAL, 01086 // Count: 01087 // ColorPlanes * 3 01088 // Value: 01089 // See below 01090 // Default: 01091 // None 01092 // Usage: 01093 // IFD 0 or Camera Profile IFD 01094 // Description: 01095 // ColorMatrix1 defines a transformation matrix that converts 01096 // XYZ values to reference camera native color space values, 01097 // under the first calibration illuminant. The matrix values 01098 // are stored in row scan order. The ColorMatrix1 tag is 01099 // required for all non-monochrome DNG files. See Chapter 6, 01100 // “Mapping Camera Color Space to CIE XYZ Space” on page 67 01101 // for details of the color-processing model. 01102 },{ 01103 "ColorMatrix2", 01104 50722, 01105 TIFF_SRATIONAL, 01106 // Count: 01107 // ColorPlanes * 3 01108 // Value: 01109 // See below 01110 // Default: 01111 // None 01112 // Usage: 01113 // IFD 0 or Camera Profile IFD 01114 // Description: 01115 // ColorMatrix2 defines a transformation matrix that converts 01116 // XYZ values to reference camera native color space values, 01117 // under the second calibration illuminant. The matrix values 01118 // are stored in row scan order. See Chapter 6, “Mapping 01119 // Camera Color Space to CIE XYZ Space” on page 67 for details 01120 // of the color-processing model. 01121 },{ 01122 "CameraCalibration1", 01123 50723, 01124 TIFF_SRATIONAL, 01125 // Count: 01126 // ColorPlanes * ColorPlanes 01127 // Value: 01128 // See below 01129 // Default: 01130 // Identity matrix 01131 // Usage: 01132 // IFD 0 01133 // Description: 01134 // CameraCalibration1 defines a calibration matrix that 01135 // transforms reference camera native space values to 01136 // individual camera native space values under the first 01137 // calibration illuminant. The matrix is stored in row scan 01138 // order. This matrix is stored separately from the matrix 01139 // specified by the ColorMatrix1 tag to allow raw converters 01140 // to swap in replacement color matrices based on 01141 // UniqueCameraModel tag, while still taking advantage of any 01142 // per-individual camera calibration performed by the camera 01143 // manufacturer.See Chapter 6, “Mapping Camera Color Space to 01144 // CIE XYZ Space” on page 67 for details of the 01145 // color-processing model. 01146 },{ 01147 "CameraCalibration2", 01148 50724, 01149 TIFF_SRATIONAL, 01150 // Count: 01151 // ColorPlanes * ColorPlanes 01152 // Value: 01153 // See below 01154 // Default: 01155 // Identity matrix 01156 // Usage: 01157 // IFD 0 01158 // Description: 01159 // CameraCalibration2 defines a calibration matrix that 01160 // transforms reference camera native space values to 01161 // individual camera native space values under the second 01162 // calibration illuminant. The matrix is stored in row scan 01163 // order. This matrix is stored separately from the matrix 01164 // specified by the ColorMatrix2 tag to allow raw converters 01165 // to swap in replacement color matrices based on 01166 // UniqueCameraModel tag, while still taking advantage of any 01167 // per-individual camera calibration performed by the camera 01168 // manufacturer. See Chapter 6, “Mapping Camera Color Space 01169 // to CIE XYZ Space” on page 67 for details of the 01170 // color-processing model. 01171 },{ 01172 "ReductionMatrix1", 01173 50725, 01174 TIFF_SRATIONAL, 01175 // Count: 01176 // 3 * ColorPlanes 01177 // Value: 01178 // See below 01179 // Default: 01180 // None 01181 // Usage: 01182 // IFD 0 or Camera Profile IFD 01183 // Description: 01184 // ReductionMatrix1 defines a dimensionality reduction matrix 01185 // for use as the first stage in converting color camera 01186 // native space values to XYZ values, under the first 01187 // calibration illuminant. This tag may only be used if 01188 // ColorPlanes is greater than 3. The matrix is stored in row 01189 // scan order. See Chapter 6, “Mapping Camera Color Space to 01190 // CIE XYZ Space” on page 67 for details of the 01191 // color-processing model. 01192 },{ 01193 "ReductionMatrix2", 01194 50726, 01195 TIFF_SRATIONAL, 01196 // Count: 01197 // 3 * ColorPlanes 01198 // Value: 01199 // See below 01200 // Default: 01201 // None 01202 // Usage: 01203 // IFD 0 or Camera Profile IFD 01204 // Description: 01205 // ReductionMatrix2 defines a dimensionality reduction matrix 01206 // for use as the first stage in converting color camera 01207 // native space values to XYZ values, under the second 01208 // calibration illuminant. This tag may only be used if 01209 // ColorPlanes is greater than 3. The matrix is stored in row 01210 // scan order. See Chapter 6, “Mapping Camera Color Space to 01211 // CIE XYZ Space” on page 67 for details of the 01212 // color-processing model. 01213 },{ 01214 "AnalogBalance", 01215 50727, 01216 TIFF_RATIONAL, 01217 // Count: 01218 // ColorPlanes 01219 // Value: 01220 // See below 01221 // Default: 01222 // All 1.0 01223 // Usage: 01224 // IFD 0 01225 // Description: 01226 // Normally the stored raw values are not white balanced, 01227 // since any digital white balancing will reduce the dynamic 01228 // range of the final image if the user decides to later 01229 // adjust the white balance; however, if camera hardware is 01230 // capable of white balancing the color channels before the 01231 // signal is digitized, it can improve the dynamic range of 01232 // the final image. 01233 // AnalogBalance defines the gain, either analog (recommended) 01234 // or digital (not recommended) that has been applied the 01235 // stored raw values. 01236 // See Chapter 6, “Mapping Camera Color Space to CIE XYZ 01237 // Space” on page 67 for details of the color-processing 01238 // model. 01239 },{ 01240 "AsShotNeutral", 01241 50728, 01242 TIFF_SHORT //or RATIONAL, 01243 // Count: 01244 // ColorPlanes 01245 // Value: 01246 // See below 01247 // Default: 01248 // None 01249 // Usage: 01250 // IFD 0 01251 // Description: 01252 // AsShotNeutral specifies the selected white balance at time 01253 // of capture, encoded as the coordinates of a perfectly 01254 // neutral color in linear reference space values. The 01255 // inclusion of this tag precludes the inclusion of the 01256 // AsShotWhiteXY tag. 01257 },{ 01258 "AsShotWhiteXY", 01259 50729, 01260 TIFF_RATIONAL, 01261 // Count: 01262 // 2 01263 // Value: 01264 // See below 01265 // Default: 01266 // None 01267 // Usage: 01268 // IFD 0 01269 // Description: 01270 // AsShotWhiteXY specifies the selected white balance at time 01271 // of capture, encoded as x-y chromaticity coordinates. The 01272 // inclusion of this tag precludes the inclusion of the 01273 // AsShotNeutral tag. 01274 },{ 01275 "BaselineExposure", 01276 50730, 01277 TIFF_SRATIONAL, 01278 // Count: 01279 // 1 01280 // Value: 01281 // See below 01282 // Default: 01283 // 0.0 01284 // Usage: 01285 // IFD 0 01286 // Description: 01287 // Camera models vary in the trade-off they make between 01288 // highlight headroom and shadow noise. Some leave a 01289 // significant amount of highlight headroom during a normal 01290 // exposure. This allows significant negative exposure 01291 // compensation to be applied during raw conversion, but also 01292 // means normal exposures will contain more shadow 01293 // noise. Other models leave less headroom during normal 01294 // exposures. This allows for less negative exposure 01295 // compensation, but results in lower shadow noise for normal 01296 // exposures. 01297 // Because of these differences, a raw converter needs to vary 01298 // the zero point of its exposure compensation control from 01299 // model to model. BaselineExposure specifies by how much (in 01300 // EV units) to move the zero point. Positive values result in 01301 // brighter default results, while negative values result in 01302 // darker default results. 01303 },{ 01304 "BaselineNoise", 01305 50731, 01306 TIFF_RATIONAL, 01307 // Count: 01308 // 1 01309 // Value: 01310 // See below 01311 // Default: 01312 // 1.0 01313 // Usage: 01314 // IFD 0 01315 // Description: 01316 // BaselineNoise specifies the relative noise level of the 01317 // camera model at a baseline ISO value of 100, compared to a 01318 // reference camera model. 01319 // Since noise levels tend to vary approximately with the 01320 // square root of the ISO value, a raw converter can use this 01321 // value, combined with the current ISO, to estimate the 01322 // relative noise level of the current image. 01323 },{ 01324 "BaselineSharpness", 01325 50732, 01326 TIFF_RATIONAL, 01327 // Count: 01328 // 1 01329 // Value: 01330 // See below 01331 // Default: 01332 // 1.0 01333 // Usage: 01334 // IFD 0 01335 // Description: 01336 // BaselineSharpness specifies the relative amount of 01337 // sharpening required for this camera model, compared to a 01338 // reference camera model. Camera models vary in the strengths 01339 // of their anti-aliasing filters. Cameras with weak or no 01340 // filters require less sharpening than cameras with strong 01341 // anti-aliasing filters. 01342 },{ 01343 "BayerGreenSplit", 01344 50733, 01345 TIFF_LONG, 01346 // Count: 01347 // 1 01348 // Value: 01349 // See below 01350 // Default: 01351 // 0 01352 // Usage: 01353 // Raw IFD 01354 // Description: 01355 // BayerGreenSplit only applies to CFA images using a Bayer 01356 // pattern filter array. This tag specifies, in arbitrary 01357 // units, how closely the values of the green pixels in the 01358 // blue/green rows track the values of the green pixels in the 01359 // red/green rows. 01360 // A value of zero means the two kinds of green pixels track 01361 // closely, while a non-zero value means they sometimes 01362 // diverge. The useful range for this tag is from 0 (no 01363 // divergence) to about 5000 (quite large divergence). 01364 },{ 01365 "LinearResponseLimit", 01366 50734, 01367 TIFF_RATIONAL, 01368 // Count: 01369 // 1 01370 // Value: 01371 // See below 01372 // Default: 01373 // 1.0 01374 // Usage: 01375 // IFD 0 01376 // Description: 01377 // Some sensors have an unpredictable non-linearity in their 01378 // response as they near the upper limit of their encoding 01379 // range. This non-linearity results in color shifts in the 01380 // highlight areas of the resulting image unless the raw 01381 // converter compensates for this effect. 01382 // LinearResponseLimit specifies the fraction of the encoding 01383 // range above which the response may become significantly 01384 // non-linear. 01385 },{ 01386 "CameraSerialNumber", 01387 50735, 01388 TIFF_ASCII, 01389 // Count: 01390 // String length including null 01391 // Value: 01392 // Null terminated string 01393 // Default: 01394 // None 01395 // Usage: 01396 // IFD 0 01397 // Description: 01398 // CameraSerialNumber contains the serial number of the camera or camera body that captured the image. 01399 },{ 01400 "LensInfo", 01401 50736, 01402 TIFF_RATIONAL, 01403 // Count: 01404 // 4 01405 // Value: 01406 // Value: 0: Minimum focal length in mm. 01407 // Value: 1: Maximum focal length in mm. 01408 // Value: 2: Minimum (maximum aperture) f-stop at minimum focal length. 01409 // Value: 3: Minimum (maximum aperture) f-stop at maximum focal length. 01410 // Default: 01411 // none 01412 // Usage: 01413 // IFD 0 01414 // Description: 01415 // LensInfo contains information about the lens that captured 01416 // the image. If the minimum f-stops are unknown, they should 01417 // be encoded as 0/0. 01418 },{ 01419 "ChromaBlurRadius", 01420 50737, 01421 TIFF_RATIONAL, 01422 // Count: 01423 // 1 01424 // Value: 01425 // Chroma blur radius in pixels 01426 // Default: 01427 // See below 01428 // Usage: 01429 // Raw IFD 01430 // Description: 01431 // ChromaBlurRadius provides a hint to the DNG reader about 01432 // how much chroma blur should be applied to the image. If 01433 // this tag is omitted, the reader will use its default amount 01434 // of chroma blurring. 01435 // Normally this tag is only included for non-CFA images, 01436 // since the amount of chroma blur required for mosaic images 01437 // is highly dependent on the de-mosaic algorithm, in which 01438 // case the DNG reader's default value is likely optimized for 01439 // its particular de-mosaic algorithm. 01440 },{ 01441 "AntiAliasStrength", 01442 50738, 01443 TIFF_RATIONAL, 01444 // Count: 01445 // 1 01446 // Value: 01447 // Relative strength of the camera's anti-alias filter 01448 // Default: 01449 // 1.0 01450 // Usage: 01451 // Raw IFD 01452 // Description: 01453 // AntiAliasStrength provides a hint to the DNG reader about 01454 // how strong the camera's anti-alias filter is. A value of 01455 // 0.0 means no anti-alias filter (i.e., the camera is prone 01456 // to aliasing artifacts with some subjects), while a value of 01457 // 1.0 means a strong anti-alias filter (i.e., the camera 01458 // almost never has aliasing artifacts). 01459 // Note that this tag overlaps in functionality with the 01460 // BaselineSharpness tag. The primary difference is the 01461 // AntiAliasStrength tag is used as a hint to the de-mosaic 01462 // algorithm, while the BaselineSharpness tag is used as a 01463 // hint to a sharpening algorithm applied later in the 01464 // processing pipeline. 01465 },{ 01466 "ShadowScale", 01467 50739, 01468 TIFF_RATIONAL, 01469 // Count: 01470 // 1 01471 // Value: 01472 // See below 01473 // Default: 01474 // 1.0 01475 // Usage: 01476 // IFD 0 01477 // Description: 01478 // This tag is used by Adobe Camera Raw to control the sensitivity of its "Shadows" slider. 01479 },{ 01480 "DNGPrivateData", 01481 50740, 01482 TIFF_BYTE, 01483 // Count: Length of private data block in bytes Value: See 01484 // below Default: None Usage: IFD 0 Description: 01485 // DNGPrivateData provides a way for camera manufacturers to 01486 // store private data in the DNG file for use by their own raw 01487 // converters, and to have that data preserved by programs 01488 // that edit DNG files. 01489 // The private data must follow these rules: 01490 // The private data must start with a null-terminated ASCII 01491 // string identifying the data. The first part of this string 01492 // must be the manufacturer's name, to avoid conflicts between 01493 // manufacturers. 01494 // *The private data must be self-contained. All offsets 01495 // within the private data must be offsets relative to the 01496 // start of the private data, and must not point to bytes 01497 // outside the private data. 01498 // *The private data must be byte-order independent. If a DNG 01499 // file is converted from a big-endian file to a 01500 // little-endian file, the data must remain valid. 01501 },{ 01502 "MakerNoteSafety", 01503 50741, 01504 TIFF_SHORT, 01505 // Count: 01506 // 1 01507 // Value: 01508 // 0 (unsafe) or 1 (safe) 01509 // Default: 01510 // 0 01511 // Usage: 01512 // IFD 0 01513 // Description: 01514 // MakerNoteSafety lets the DNG reader know whether the EXIF 01515 // MakerNote tag is safe to preserve along with the rest of 01516 // the EXIF data. File browsers and other image management 01517 // software processing an image with a preserved MakerNote 01518 // should be aware that any thumbnail image embedded in the 01519 // MakerNote may be stale, and may not reflect the current 01520 // state of the full size image. 01521 // A MakerNote is safe to preserve if it follows these rules: 01522 // *The MakerNote data must be self-contained. All offsets 01523 // within the MakerNote must be offsets relative to the start 01524 // of the MakerNote, and must not point to bytes outside the 01525 // MakerNote. 01526 // *The MakerNote data must be byte-order independent. Moving 01527 // *the data to a file with a different byte order must not 01528 // *invalidate it. 01529 },{ 01530 "RawDataUniqueID", 01531 50781, 01532 TIFF_BYTE, 01533 // Count: 01534 // 16 01535 // Value: 01536 // See below 01537 // Default: 01538 // Optional 01539 // Usage: 01540 // IFD 0 01541 // Description: 01542 // This tag contains a 16-byte unique identifier for the raw 01543 // image data in the DNG file. DNG readers can use this tag to 01544 // recognize a particular raw image, even if the file's name 01545 // or the metadata contained in the file has been changed. If 01546 // a DNG writer creates such an identifier, it should do so 01547 // using an algorithm that will ensure that it is very 01548 // unlikely two different images will end up having the same 01549 // identifier. 01550 },{ 01551 "OriginalRawFileName", 01552 50827, 01553 TIFF_ASCII // or BYTE, 01554 // Count: 01555 // Byte count including null 01556 // Value: 01557 // Null terminated UTF-8 encoded Unicode string 01558 // Default: 01559 // Optional 01560 // Usage: 01561 // IFD 0 01562 // Description: 01563 // If the DNG file was converted from a non-DNG raw file, then 01564 // this tag contains the file name of that original raw file. 01565 },{ 01566 "OriginalRawFileData", 01567 50828, 01568 TIFF_UNDEFINED, 01569 // Count: 01570 // Byte count of embedded data 01571 // Value: 01572 // See below 01573 // Default: 01574 // Optional 01575 // Usage: 01576 // IFD 0 01577 // Description: 01578 // If the DNG file was converted from a non-DNG raw file, then 01579 // this tag contains the compressed contents of that original 01580 // raw file. The contents of this tag always use the 01581 // big-endian byte order. 01582 // The tag contains a sequence of data blocks. Future versions 01583 // of the DNG specification may define additional data blocks, 01584 // so DNG readers should ignore extra bytes when parsing this 01585 // tag. DNG readers should also detect the case where data 01586 // blocks are missing from the end of the sequence, and should 01587 // assume a default value for all the missing blocks. There 01588 // are no padding or alignment bytes between data blocks. The 01589 // sequence of data blocks is: 01590 // 1.Compressed data fork of original raw file. 01591 // 2.Compressed Mac OS resource fork of original raw file. 01592 // 3.Mac OS file type (4 bytes) of original raw file. 01593 // 4.Mac OS file creator (4 bytes) of original raw file. 01594 // 5.Compressed data fork of sidecar ".THM" file. 01595 // 6.Compressed Mac OS resource fork of sidecar ".THM" file. 01596 // 7.Mac OS file type (4 bytes) of sidecar ".THM" file. 01597 // 8.Mac OS file creator (4 bytes) of sidecar ".THM" file. 01598 // If the Mac OS file types or creator codes are unknown, zero is stored. 01599 // If the Mac OS resource forks do not exist, they should be encoded as zero length forks. 01600 // Each fork (data or Mac OS resource) is compressed and encoded as: 01601 // ForkLength = first four bytes. This is the uncompressed 01602 // length of this fork. If this value is zero, then no more 01603 // data is stored for this fork. 01604 // From ForkLength, compute the number of 64K compression blocks used for this data (the last block is usually smaller than 64K): 01605 // ForkBlocks = Floor ((ForkLength + 65535) / 65536) 01606 // The next (ForkBlocks + 1) 4-byte values are an index into 01607 // the compressed data. The first ForkBlock values are offsets 01608 // from the start of the data for this fork to the start of 01609 // the compressed data for the corresponding compression 01610 // block. The last value is an offset from the start of the 01611 // data for this fork to the end of the data for this fork. 01612 // Following this index is the ZIP compressed data for each 64K compression block. 01613 },{ 01614 "ActiveArea", 01615 50829, 01616 TIFF_SHORT // or LONG, 01617 // Count: 01618 // 4 01619 // Value: 01620 // See below 01621 // Default: 01622 // 0, 0, ImageLength, ImageWidth 01623 // Usage: 01624 // Raw IFD 01625 // Description: 01626 // This rectangle defines the active (non-masked) pixels of 01627 // the sensor. The order of the rectangle coordinates is: top, 01628 // left, bottom, right. 01629 },{ 01630 "MaskedAreas", 01631 50830, 01632 TIFF_SHORT // or LONG, 01633 // Count: 01634 // 4 * number of rectangles 01635 // Value: 01636 // See below 01637 // Default: 01638 // None 01639 // Usage: 01640 // Raw IFD 01641 // Description: 01642 // This tag contains a list of non-overlapping rectangle 01643 // coordinates of fully masked pixels, which can be optionally 01644 // used by DNG readers to measure the black encoding level. 01645 // The order of each rectangle's coordinates is: top, left, 01646 // bottom, right. If the raw image data has already had its 01647 // black encoding level subtracted, then this tag should not 01648 // be used, since the masked pixels are no longer useful. 01649 // Note that DNG writers are still required to include 01650 // estimate and store the black encoding level using the black 01651 // level DNG tags. Support for the MaskedAreas tag is not 01652 // required of DNG readers. 01653 },{ 01654 "AsShotICCProfile", 01655 50831, 01656 TIFF_UNDEFINED, 01657 // Count: 01658 // Length of ICC profile in bytes 01659 // Value: 01660 // See below 01661 // Default: 01662 // Optional 01663 // Usage: 01664 // IFD 0 01665 // Description: 01666 // This tag contains an ICC profile that, in conjunction with 01667 // the AsShotPreProfileMatrix tag, provides the camera 01668 // manufacturer with a way to specify a default color 01669 // rendering from camera color space coordinates (linear 01670 // reference values) into the ICC profile connection space. 01671 // The ICC profile connection space is an output referred 01672 // colorimetric space, whereas the other color calibration 01673 // tags in DNG specify a conversion into a scene referred 01674 // colorimetric space. This means that the rendering in this 01675 // profile should include any desired tone and gamut mapping 01676 // needed to convert between scene referred values and output 01677 // referred values. DNG readers that have their own tone and 01678 // gamut mapping controls (such as Adobe Camera Raw) will 01679 // probably ignore this tag pair. 01680 },{ 01681 "AsShotPreProfileMatrix", 01682 50832, 01683 TIFF_SRATIONAL, 01684 // Count: 01685 // 3 * ColorPlanes or ColorPlanes * ColorPlanes 01686 // Value: 01687 // See below 01688 // Default: 01689 // Identity matrix 01690 // Usage: 01691 // IFD 0 01692 // Description: 01693 // This tag is used in conjunction with the AsShotICCProfile 01694 // tag. It specifies a matrix that should be applied to the 01695 // camera color space coordinates before processing the values 01696 // through the ICC profile specified in the AsShotICCProfile 01697 // tag. The matrix is stored in the row scan order. 01698 // If ColorPlanes is greater than three, then this matrix can 01699 // (but is not required to) reduce the dimensionality of the 01700 // color data down to three components, in which case the 01701 // AsShotICCProfile should have three rather than ColorPlanes 01702 // input components. 01703 },{ 01704 "CurrentICCProfile", 01705 50833, 01706 TIFF_UNDEFINED, 01707 // Count: 01708 // Length of ICC profile in bytes 01709 // Value: 01710 // See below 01711 // Default: 01712 // Optional 01713 // Usage: 01714 // IFD 0 01715 // Description: 01716 // This tag is used in conjunction with the CurrentPreProfileMatrix tag. 01717 // The CurrentICCProfile and CurrentPreProfileMatrix tags have 01718 // the same purpose and usage as the AsShotICCProfile and 01719 // AsShotPreProfileMatrix tag pair, except they are for use by 01720 // raw file editors rather than camera manufacturers. 01721 },{ 01722 "CurrentPreProfileMatrix", 01723 50834, 01724 TIFF_SRATIONAL, 01725 // Count: 01726 // 3 * ColorPlanes or ColorPlanes * ColorPlanes 01727 // Value: 01728 // See below 01729 // Default: 01730 // Identity matrix 01731 // Usage: 01732 // IFD 0 01733 // Description: 01734 // This tag is used in conjunction with the CurrentICCProfile tag. 01735 // The CurrentICCProfile and CurrentPreProfileMatrix tags have 01736 // the same purpose and usage as the AsShotICCProfile and 01737 // AsShotPreProfileMatrix tag pair, except they are for use by 01738 // raw file editors rather than camera manufacturers. 01739 },{ 01740 "ColorimetricReference", 01741 50879, 01742 TIFF_SHORT, 01743 // Count: 01744 // 1 01745 // Value: 01746 // 0 or 1 01747 // Default: 01748 // 0 01749 // Usage: 01750 // IFD 0 01751 // Description: 01752 // The DNG color model documents a transform between camera 01753 // colors and CIE XYZ values. This tag describes the 01754 // colorimetric reference for the CIE XYZ values. 01755 // 0 = The XYZ values are scene-referred. 01756 // 1 = The XYZ values are output-referred, using the ICC 01757 // profile perceptual dynamic range. 01758 // This tag allows output-referred data to be stored in DNG 01759 // files and still processed correctly by DNG readers. 01760 },{ 01761 "CameraCalibrationSignature", 01762 50931, 01763 TIFF_ASCII // or BYTE, 01764 // Count: 01765 // Length of string including null 01766 // Value: 01767 // Null terminated string 01768 // Default: 01769 // Empty string 01770 // Usage: 01771 // IFD 0 01772 // Description: 01773 // A UTF-8 encoded string associated with the 01774 // CameraCalibration1 and CameraCalibration2 tags. The 01775 // CameraCalibration1 and CameraCalibration2 tags should only 01776 // be used in the DNG color transform if the string stored in 01777 // the CameraCalibrationSignature tag exactly matches the 01778 // string stored in the ProfileCalibrationSignature tag for 01779 // the selected camera profile. 01780 },{ 01781 "ProfileCalibrationSignature", 01782 50932, 01783 TIFF_ASCII // or BYTE, 01784 // Count: 01785 // Length of string including null 01786 // Value: 01787 // Null terminated string 01788 // Default: 01789 // Empty string 01790 // Usage: 01791 // IFD 0 or Camera Profile IFD 01792 // Description: 01793 // A UTF-8 encoded string associated with the camera profile 01794 // tags. The CameraCalibration1 and CameraCalibration2 tags 01795 // should only be used in the DNG color transfer if the string 01796 // stored in the CameraCalibrationSignature tag exactly 01797 // matches the string stored in the 01798 // ProfileCalibrationSignature tag for the selected camera 01799 // profile. 01800 },{ 01801 "ExtraCameraProfiles", 01802 50933, 01803 TIFF_LONG, 01804 // Count: 01805 // Number of extra camera profiles 01806 // Value: 01807 // Offsets to Camera Profile IFDs 01808 // Default: 01809 // Empty list 01810 // Usage: 01811 // IFD 0 01812 // Description: 01813 // A list of file offsets to extra Camera Profile IFDs. The 01814 // format of a camera profile begins with a 16-bit byte order 01815 // mark (MM or II) followed by a 16-bit "magic" number equal 01816 // to 0x4352 (CR), a 32-bit IFD offset, and then a standard 01817 // TIFF format IFD. All offsets are relative to the start of 01818 // the byte order mark. Note that the primary camera profile 01819 // tags should be stored in IFD 0, and the ExtraCameraProfiles 01820 // tag should only be used if there is more than one camera 01821 // profile stored in the DNG file. 01822 },{ 01823 "AsShotProfileName", 01824 50934, 01825 TIFF_ASCII // or BYTE, 01826 // Count: 01827 // Length of string including null 01828 // Value: 01829 // Null terminated string 01830 // Default: 01831 // Optional 01832 // Usage: 01833 // IFD 0 01834 // Description: 01835 // A UTF-8 encoded string containing the name of the "as shot" 01836 // camera profile, if any. 01837 },{ 01838 "NoiseReductionApplied", 01839 50935, 01840 TIFF_RATIONAL, 01841 // Count: 01842 // 1 01843 // Value: 01844 // See below 01845 // Default: 01846 // 0/0 01847 // Usage: 01848 // Raw IFD 01849 // Description: 01850 // This tag indicates how much noise reduction has been 01851 // applied to the raw data on a scale of 0.0 to 1.0. A 0.0 01852 // value indicates that no noise reduction has been applied. A 01853 // 1.0 value indicates that the "ideal" amount of noise 01854 // reduction has been applied, i.e. that the DNG reader should 01855 // not apply additional noise reduction by default. A value of 01856 // 0/0 indicates that this parameter is unknown. 01857 },{ 01858 "ProfileName", 01859 50936, 01860 TIFF_ASCII // or BYTE, 01861 // Count: 01862 // Length of string including null 01863 // Value: 01864 // Null terminated string 01865 // Default: 01866 // None 01867 // Usage: 01868 // IFD 0 or Camera Profile IFD 01869 // Description: 01870 // A UTF-8 encoded string containing the name of the camera 01871 // profile. This tag is optional if there is only a single 01872 // camera profile stored in the file but is required for all 01873 // camera profiles if there is more than one camera profile 01874 // stored in the file. 01875 },{ 01876 "ProfileHueSatMapDims", 01877 50937, 01878 TIFF_LONG, 01879 // Count: 01880 // 3 01881 // Value: 01882 // HueDivisions SaturationDivisions ValueDivisions 01883 // Default: 01884 // None 01885 // Usage: 01886 // IFD 0 or Camera Profile IFD 01887 // Description: 01888 // This tag specifies the number of input samples in each 01889 // dimension of the hue/saturation/value mapping tables. The 01890 // data for these tables are stored in ProfileHueSatMapData1 01891 // and ProfileHueSatMapData2 tags. Allowed values include the 01892 // following: 01893 // *HueDivisions >= 1 01894 // *SaturationDivisions >= 2 01895 // *ValueDivisions >=1 01896 // The most common case has ValueDivisions equal to 1, so only 01897 // hue and saturation are used as inputs to the mapping table. 01898 },{ 01899 "ProfileHueSatMapData1", 01900 50938, 01901 TIFF_FLOAT, 01902 // Count: 01903 // HueDivisions * SaturationDivisions * ValueDivisions * 3 01904 // Value: 01905 // See below 01906 // Default: 01907 // None 01908 // Usage: 01909 // IFD 0 or Camera Profile IFD 01910 // Description: 01911 // This tag contains the data for the first 01912 // hue/saturation/value mapping table. Each entry of the table 01913 // contains three 32-bit IEEE floating-point values. The first 01914 // entry is hue shift in degrees; the second entry is 01915 // saturation scale factor; and the third entry is a value 01916 // scale factor. The table entries are stored in the tag in 01917 // nested loop order, with the value divisions in the outer 01918 // loop, the hue divisions in the middle loop, and the 01919 // saturation divisions in the inner loop. All zero input 01920 // saturation entries are required to have a value scale 01921 // factor of 1.0. The hue/saturation/value table application 01922 // is described in detail in Chapter 6. 01923 },{ 01924 "ProfileHueSatMapData2", 01925 50939, 01926 TIFF_FLOAT, 01927 // Count: 01928 // HueDivisions * SaturationDivisions * ValueDivisions * 3 01929 // Value: 01930 // See below 01931 // Default: 01932 // None 01933 // Usage: 01934 // IFD 0 or Camera Profile IFD 01935 // Description: 01936 // This tag contains the data for the second 01937 // hue/saturation/value mapping table. Each entry of the table 01938 // contains three 32-bit IEEE floating-point values. The first 01939 // entry is hue shift in degrees; the second entry is a 01940 // saturation scale factor; and the third entry is a value 01941 // scale factor. The table entries are stored in the tag in 01942 // nested loop order, with the value divisions in the outer 01943 // loop, the hue divisions in the middle loop, and the 01944 // saturation divisions in the inner loop. All zero input 01945 // saturation entries are required to have a value scale 01946 // factor of 1.0. The hue/saturation/value table application 01947 // is described in detail in Chapter 6. 01948 },{ 01949 "ProfileToneCurve", 01950 50940, 01951 TIFF_FLOAT, 01952 // Count: 01953 // Samples * 2 01954 // Value: 01955 // See below 01956 // Default: 01957 // None 01958 // Usage: 01959 // IFD 0 or Camera Profile IFD 01960 // Description: 01961 // This tag contains a default tone curve that can be applied 01962 // while processing the image as a starting point for user 01963 // adjustments. The curve is specified as a list of 32-bit 01964 // IEEE floating-point value pairs in linear gamma. Each 01965 // sample has an input value in the range of 0.0 to 1.0, and 01966 // an output value in the range of 0.0 to 1.0. The first 01967 // sample is required to be (0.0, 0.0), and the last sample is 01968 // required to be (1.0, 1.0). Interpolated the curve using a 01969 // cubic spline. 01970 },{ 01971 "ProfileEmbedPolicy", 01972 50941, 01973 TIFF_LONG, 01974 // Count: 01975 // 1 01976 // Value: 01977 // See below 01978 // Default: 01979 // 0 01980 // Usage: 01981 // IFD 0 or Camera Profile IFD 01982 // Description: 01983 // This tag contains information about the usage rules for the 01984 // associated camera profile. The valid values and meanings 01985 // are: 01986 // *0 = “allow copying”. The camera profile can be used to 01987 // *process, or be embedded in, any DNG file. It can be copied 01988 // *from DNG files to other DNG files, or copied from DNG 01989 // *files and stored on the user’s system for use in 01990 // *processing or embedding in any DNG file. The camera 01991 // *profile may not be used to process non-DNG files. 01992 // *1 = “embed if used”. This value applies the same rules as 01993 // *“allow copying”, except it does not allow copying the 01994 // *camera profile from a DNG file for use in processing any 01995 // *image other than the image in which it is embedded, unless 01996 // *the profile is already stored on the user’s system. 01997 // *2 = “embed never”. This value only applies to profiles 01998 // *stored on a user’s system but not already embedded in DNG 01999 // *files. These stored profiles can be used to process images 02000 // *but cannot be embedded in files. If a camera profile is 02001 // *already embedded in a DNG file, then this value has the 02002 // *same restrictions as “embed if used”. 02003 // *3 = “no restrictions”. The camera profile creator has not 02004 // *placed any restrictions on the use of the camera profile. 02005 },{ 02006 "ProfileCopyright", 02007 50942, 02008 TIFF_ASCII // or BYTE, 02009 // Count: 02010 // Length of string including null 02011 // Value: 02012 // Null terminated string 02013 // Default: 02014 // Optional 02015 // Usage: 02016 // IFD 0 or Camera Profile IFD 02017 // Description: 02018 // A UTF-8 encoded string containing the copyright information 02019 // for the camera profile. This string always should be 02020 // preserved along with the other camera profile tags. 02021 },{ 02022 "ForwardMatrix1", 02023 50964, 02024 TIFF_SRATIONAL, 02025 // Count: 02026 // 3 * ColorPlanes 02027 // Value: 02028 // See below 02029 // Default: 02030 // Optional 02031 // Usage: 02032 // IFD 0 or Camera Profile IFD 02033 // Description: 02034 // This tag defines a matrix that maps white balanced camera 02035 // colors to XYZ D50 colors. Application is described in 02036 // detail in Chapter 6. 02037 },{ 02038 "ForwardMatrix2", 02039 50965, 02040 TIFF_SRATIONAL, 02041 // Count: 02042 // 3 * ColorPlanes 02043 // Value: 02044 // See below 02045 // Default: 02046 // Optional 02047 // Usage: 02048 // IFD 0 or Camera Profile IFD 02049 // Description: 02050 // This tag defines a matrix that maps white balanced camera 02051 // colors to XYZ D50 colors. Application is described in 02052 // detail in Chapter 6. 02053 },{ 02054 "PreviewApplicationName", 02055 50966, 02056 TIFF_ASCII // or BYTE, 02057 // Count: 02058 // Length of string including null 02059 // Value: 02060 // Null terminated string 02061 // Default: 02062 // Optional 02063 // Usage: 02064 // Preview IFD 02065 // Description: 02066 // A UTF-8 encoded string containing the name of the 02067 // application that created the preview stored in the IFD. 02068 },{ 02069 "PreviewApplicationVersion", 02070 50967, 02071 TIFF_ASCII // or BYTE, 02072 // Count: 02073 // Length of string including null 02074 // Value: 02075 // Null terminated string 02076 // Default: 02077 // Optional 02078 // Usage: 02079 // Preview IFD 02080 // Description: 02081 // A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD. 02082 },{ 02083 "PreviewSettingsName", 02084 50968, 02085 TIFF_ASCII // or BYTE, 02086 // Count: 02087 // Length of string including null 02088 // Value: 02089 // Null terminated string 02090 // Default: 02091 // Optional 02092 // Usage: 02093 // Preview IFD 02094 // Description: 02095 // A UTF-8 encoded string containing the name of the 02096 // conversion settings (for example, snapshot name) used for 02097 // the preview stored in the IFD. 02098 },{ 02099 "PreviewSettingsDigest", 02100 50969, 02101 TIFF_BYTE, 02102 // Count: 02103 // 16 02104 // Value: 02105 // See below 02106 // Default: 02107 // Optional 02108 // Usage: 02109 // Preview IFD 02110 // Description: 02111 // A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD. 02112 },{ 02113 "PreviewColorSpace", 02114 50970, 02115 TIFF_LONG, 02116 // Count: 02117 // 1 02118 // Value: 02119 // See below 02120 // Default: 02121 // See below 02122 // Usage: 02123 // Preview IFD 02124 // Description: 02125 // This tag specifies the color space in which the rendered preview in this IFD is stored. The valid values include: 02126 // *0 = Unknown 02127 // *1 = Gray Gamma 2.2 02128 // *2 = sRGB 02129 // *3 = Adobe RGB 02130 // *4 = ProPhoto RGB 02131 // The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews. 02132 },{ 02133 "PreviewDateTime", 02134 50971, 02135 TIFF_ASCII, 02136 // Count: 02137 // Length of string including null 02138 // Value: 02139 // Null terminated string 02140 // Default: 02141 // Optional 02142 // Usage: 02143 // Preview IFD 02144 // Description: 02145 // This tag is an ASCII string containing the name of the 02146 // date/time at which the preview stored in the IFD was 02147 // rendered. The date/time is encoded using ISO 8601 format. 02148 },{ 02149 "RawImageDigest", 02150 50972, 02151 TIFF_BYTE, 02152 // Count: 02153 // 16 02154 // Value: 02155 // See below 02156 // Default: 02157 // Optional 02158 // Usage: 02159 // IFD 0 02160 // Description: 02161 // This tag is an MD5 digest of the raw image data. All pixels 02162 // in the image are processed in row-scan order. Each pixel is 02163 // zero padded to 16 or 32 bits deep (16-bit for data less 02164 // than or equal to 16 bits deep, 32-bit otherwise). The data 02165 // for each pixel is processed in little-endian byte order. 02166 },{ 02167 "OriginalRawFileDigest", 02168 50973, 02169 TIFF_BYTE, 02170 // Count: 02171 // 16 02172 // Value: 02173 // See below 02174 // Default: 02175 // Optional 02176 // Usage: 02177 // IFD 0 02178 // Description: 02179 // This tag is an MD5 digest of the data stored in the OriginalRawFileData tag. 02180 },{ 02181 "SubTileBlockSize", 02182 50974, 02183 TIFF_SHORT // or LONG, 02184 // Count: 02185 // 2 02186 // Value: 02187 // SubTileBlockRows SubTileBlockCols 02188 // Default: 02189 // 1, 1 02190 // Usage: 02191 // Raw IFD 02192 // Description: 02193 // Normally, the pixels within a tile are stored in simple 02194 // row-scan order. This tag specifies that the pixels within a 02195 // tile should be grouped first into rectangular blocks of the 02196 // specified size. These blocks are stored in row-scan 02197 // order. Within each block, the pixels are stored in row-scan 02198 // order. The use of a non-default value for this tag requires 02199 // setting the DNGBackwardVersion tag to at least 1.2.0.0. 02200 },{ 02201 "RowInterleaveFactor", 02202 50975, 02203 TIFF_SHORT // or LONG, 02204 // Count: 02205 // 1 02206 // Value: 02207 // RowInterleaveFactor 02208 // Default: 02209 // 1 02210 // Usage: 02211 // Raw IFD 02212 // Description: 02213 // This tag specifies that rows of the image are stored in 02214 // interleaved order. The value of the tag specifies the 02215 // number of interleaved fields. The use of a non-default 02216 // value for this tag requires setting the DNGBackwardVersion 02217 // tag to at least 1.2.0.0. 02218 },{ 02219 "ProfileLookTableDims", 02220 50981, 02221 TIFF_LONG, 02222 // Count: 02223 // 3 02224 // Value: 02225 // HueDivisions SaturationDivisions ValueDivisions 02226 // Default: 02227 // none 02228 // Usage: 02229 // IFD 0 or Camera Profile IFD 02230 // Description: 02231 // This tag specifies the number of input samples in each 02232 // dimension of a default "look" table. The data for this 02233 // table is stored in the ProfileLookTableData tag. Allowed 02234 // values include: 02235 // HueDivisions >= 1 02236 // SaturationDivisions >= 2 02237 // Value:Divisions >= 1 02238 },{ 02239 "ProfileLookTableData", 02240 50982, 02241 TIFF_FLOAT, 02242 // Count: 02243 // HueDivisions * SaturationDivisions * ValueDivisions * 3 02244 // Value: 02245 // See below 02246 // Default: 02247 // none 02248 // Usage: 02249 // IFD 0 or Camera Profile IFD 02250 // Description: 02251 // This tag contains a default "look" table that can be 02252 // applied while processing the image as a starting point for 02253 // user adjustment. This table uses the same format as the 02254 // tables stored in the ProfileHueSatMapData1 and 02255 // ProfileHueSatMapData2 tags, and is applied in the same 02256 // color space. However, it should be applied later in the 02257 // processing pipe, after any exposure compensation and/or 02258 // fill light stages, but before any tone curve stage. Each 02259 // entry of the table contains three 32-bit IEEE 02260 // floating-point values. The first entry is hue shift in 02261 // degrees, the second entry is a saturation scale factor, and 02262 // the third entry is a value scale factor. The table entries 02263 // are stored in the tag in nested loop order, with the value 02264 // divisions in the outer loop, the hue divisions in the 02265 // middle loop, and the saturation divisions in the inner 02266 // loop. All zero input saturation entries are required to 02267 // have a value scale factor of 1.0. 02268 },{ 02269 "OpcodeList1", 02270 51008, 02271 TIFF_UNDEFINED, 02272 // Count: 02273 // Variable 02274 // Value: 02275 // Opcode List 02276 // Default: 02277 // Empty List 02278 // Usage: 02279 // Raw IFD 02280 // Description: 02281 // Specifies the list of opcodes that should be applied to the 02282 // raw image, as read directly from the file. The format and 02283 // processing details of an opcode list are described in 02284 // Chapter 7, "Opcode List Processing". 02285 },{ 02286 "OpcodeList2", 02287 51009, 02288 TIFF_UNDEFINED, 02289 // Count: 02290 // Variable 02291 // Value: 02292 // Opcode List 02293 // Default: 02294 // Empty List 02295 // Usage: 02296 // Raw IFD 02297 // Description: 02298 // Specifies the list of opcodes that should be applied to the 02299 // raw image, just after it has been mapped to linear 02300 // reference values. The format and processing details of an 02301 // opcode list are described in Chapter 7, "Opcode List 02302 // Processing". 02303 },{ 02304 "OpcodeList3", 02305 51022, 02306 TIFF_UNDEFINED, 02307 // Count: 02308 // Variable 02309 // Value: 02310 // Opcode List 02311 // Default: 02312 // Empty List 02313 // Usage: 02314 // Raw IFD 02315 // Description: 02316 // Specifies the list of opcodes that should be applied to the 02317 // raw image, just after it has been demosaiced. The format 02318 // and processing details of an opcode list are described in 02319 // Chapter 7, "Opcode List Processing". 02320 },{ 02321 "NoiseProfile", 02322 51041, 02323 TIFF_DOUBLE, 02324 // Count: 02325 // 2 or 2 * ColorPlanes 02326 // Value: 02327 // See Below 02328 // Default: 02329 // Value:s are estimated from BaselineNoise tag (see below). 02330 // Usage: 02331 // Raw IFD 02332 // Description: 02333 // NoiseProfile describes the amount of noise in a raw 02334 // image. Specifically, this tag models the amount of 02335 // signal-dependent photon (shot) noise and signal-independent 02336 // sensor readout noise, two common sources of noise in raw 02337 // images. The model assumes that the noise is white and 02338 // spatially independent, ignoring fixed pattern effects and 02339 // other sources of noise (e.g., pixel response 02340 // non-uniformity, spatially-dependent thermal effects, etc.). 02341 // This tag is intended to be used to describe the amount of 02342 // noise present in unprocessed raw image data. When noise 02343 // reduction has already been applied to the raw data (i.e., 02344 // NoiseReductionApplied0), this tag may be used to estimate 02345 // the white component of the residual noise. For the 02346 // purposes of this tag, noise is defined as the standard 02347 // deviation of a random variable x, where xrepresents a 02348 // recorded linear signal in the range x01[,]. The 02349 // two-parameter noise model isNixSixOi+= for parameters 02350 // (SiOi), where Siis a scale term that models the amount of 02351 // sensor amplification, and Oiis an offset term that models 02352 // the amount of sensor readout noise. A more detailed 02353 // explanation of this model is given below. The data 02354 // elements for this tag are the nsets of noise model 02355 // parameters:S1O1S2O2SnO Note that n must be 1 (i.e., 02356 // tag count is 2) or equal to the number of color planes in 02357 // the image (i.e., tag count is 2ColorPlanes). When n1=, the 02358 // two specified parameters (S1O1) define the same noise 02359 // model for all image planes. Whenn is equal to the number of 02360 // image planes, the parameters (SiOi) define the noise model 02361 // for the ith image plane, e.g., (S1O1) correspond to the 02362 // first image plane, (S2O2) correspond to the second image 02363 // plane, etc. The order of the parameters follows the plane 02364 // order specified by the CFAPlaneColor tag. EachSi term must 02365 // be positive (Si0), and eachOi term must be non-negative 02366 // (Oi0). A BaselineNoise tag value of 1.0 at ISO 100 02367 // corresponds approximately to NoiseProfile parameter values 02368 // of Si2105–=and Oi4.5107–=(e.g., standard deviation of 02369 // 0.00201 when x0.18=); these values may be used to estimate 02370 // absolute noise levels in an image when the NoiseProfile tag 02371 // is missing. When both tags are present, however, DNG 02372 // readers should prefer using the NoiseProfile data, since it 02373 // describes noise levels more precisely than BaselineNoise. 02374 // A more detailed description of the noise model is given 02375 // below. This tag models two common sources of noise: 02376 // 1.Photon (shot) noise p, which has a white Poisson 02377 // distribution, and 2.Electronic readout noise r, which is 02378 // present even in the absence of light and is assumed to have 02379 // an approximately white normal (Gaussian) distribution. 02380 // Assuming thatp andr are independent random variables, the 02381 // square of the total noise (i.e., the variance) can be 02382 // expressed as the sum of the squares of the individual 02383 // sources of noise:N2p2r2+=1 In this expression, the 02384 // variables N, p, andr are expressed in B-bit recorded 02385 // digital values, where common values ofB include 12, 14, and 02386 // 16 bits. Ifxˆ is the average signal level expressed in 02387 // photons, then its variance will also be xˆ, since a random 02388 // variable with a Poisson distribution has a variance equal 02389 // to its mean:pˆ2xˆ=2 wherepˆ denotes the photon noise, 02390 // expressed in photons. The conversion factor between photons 02391 // (xˆpˆ) and B-bit digital values (xp) is the gain factor 02392 // g:xgxˆ=3pgpˆ=4 Substituting equations 2, 3, and 4 02393 // into equation 1 yields:N2gpˆ2r2+=g2xˆr2+=gxr2+= 02394 // Therefore the total noiseN can be expressed as a 02395 // two-parameter function of the signal x:Nxgxr2+=SisOi+= 02396 // for model parameters SigOir2==. This tag uses the 02397 // convention of a normalized noise model, i.e.,Nx() is the 02398 // standard deviation (i.e., noise) of a random variable x, 02399 // where x represents a recorded linear signal in the range 02400 // x01[,]. The specified parameters (SiOi) must also be 02401 // appropriately normalized. 02402 }, 02404 { 02405 "ExifVersion", 02406 // The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard 02407 // (see section 4.2). Conformance to this standard is indicated by recording "0220" as 4-byte ASCII. Since the type is 02408 // UNDEFINED, there is no NULL for termination. 02409 36864, 02410 TIFF_UNDEFINED 02411 // Count = 4 02412 // Default = "0220" 02413 },{ 02414 "FlashpixVersion", 02415 // The Flashpix format version supported by a FPXR file. If the FPXR function supports Flashpix format Ver. 1.0, this 02416 // is indicated similarly to ExifVersion by recording "0100" as 4-byte ASCII. Since the type is UNDEFINED, there is no 02417 // NULL for termination. 02418 40960, 02419 TIFF_UNDEFINED 02420 // Count = 4 02421 // Default = "0100" 02422 // 0100 = Flashpix Format Version 1.0 02423 // Other = reserved 02424 },{ 02425 "ColorSpace", 02426 // The color space information tag (ColorSpace) is always recorded as the color space specifier. 02427 // Normally sRGB (=1) is used to define the color space based on the PC monitor conditions and environment. If a 02428 // color space other than sRGB is used, Uncalibrated (=FFFF.H) is set. Image data recorded as Uncalibrated can be 02429 // treated as sRGB when it is converted to Flashpix. On sRGB see Annex E. 02430 40961, 02431 TIFF_SHORT 02432 // Count = 1 02433 // 1 = sRGB 02434 // FFFF.H = Uncalibrated 02435 // Other = reserved 02436 },{ 02437 "PixelXDimension", 02438 // Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful 02439 // image shall be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not 02440 // exist in an uncompressed file. For details see section 2.8.1 and Annex F. 02441 40962, 02442 TIFF_LONG // or SHORT 02443 // Count = 1 02444 // Default = none 02445 },{ 02446 "PixelYDimension", 02447 // Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful 02448 // image shall be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not 02449 // exist in an uncompressed file. For details see section 2.8.1 and Annex F. Since data padding is unnecessary in the 02450 // vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that 02451 // recorded in the SOF. 02452 40963, 02453 TIFF_LONG // or SHORT 02454 // Count = 1 02455 },{ 02456 "ComponentsConfiguration", 02457 // Information specific to compressed data. The channels of each component are arranged in order from the 1st 02458 // component to the 4th. For uncompressed data the data arrangement is given in the PhotometricInterpretation tag. 02459 // However, since PhotometricInterpretation can only express the order of Y,Cb and Cr, this tag is provided for cases 02460 // when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences. 02461 37121, 02462 TIFF_UNDEFINED 02463 // Count = 4 02464 // Default = 4 5 6 0 (if RGB uncompressed) 02465 // 1 2 3 0 (other cases) 02466 // 0 = does not exist 02467 // 1 = Y 02468 // 2 = Cb 02469 // 3 = Cr 02470 // 4 = R 02471 // 5 = G 02472 // 6 = B 02473 // Other = reserved 02474 },{ 02475 "CompressedBitsPerPixel", 02476 // Information specific to compressed data. The compression mode used for a compressed image is indicated in unit 02477 // bits per pixel. 02478 37122, 02479 TIFF_RATIONAL 02480 // Count = 1 02481 // Default = none 02482 },{ 02483 "MakerNote", 02484 // A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer, 02485 // but this tag should not be used for any other than its intended purpose. 02486 37500, 02487 TIFF_UNDEFINED 02488 // Count = Any 02489 // Default = none 02490 },{ 02491 "UserComment", 02492 // A tag for Exif users to write keywords or comments on the image besides those in ImageDescription, and without 02493 // the character code limitations of the ImageDescription tag. 02494 37510, 02495 TIFF_UNDEFINED 02496 // Count = Any 02497 // Default = none 02498 // The character code used in the UserComment tag is identified based on an ID code in a fixed 8-byte area at the 02499 // start of the tag data area. The unused portion of the area is padded with NULL ("00.H"). ID codes are assigned by 02500 // means of registration. The designation method and references for each character code are given in Table 6 . The 02501 // value of Count N is determined based on the 8 bytes in the character code area and the number of bytes in the 02502 // user comment part. Since the TYPE is not ASCII, NULL termination is not necessary (see Figure 9). 02503 // Table 6 Character Codes and their Designation 02504 // Character Code Code Designation (8 Bytes) References 02505 // ASCII 41.H, 53.H, 43.H, 49.H, 49.H, 00.H, 00.H, 00.H ITU-T T.50 IA5 02506 // JIS 4A.H, 49.H, 53.H, 00.H, 00.H, 00.H, 00.H, 00.H JIS X208-1990 02507 // Unicode 55.H, 4E.H, 49.H, 43.H, 4F.H, 44.H, 45.H, 00.H Unicode Standard 02508 // Undefined 00.H, 00.H, 00.H, 00.H, 00.H, 00.H, 00.H, 00.H Undefined 02509 },{ 02510 "DateTimeOriginal", 02511 // The date and time when the original image data was generated. For a DSC the date and time the picture was taken 02512 // are recorded. The format is "YYYY:MM:DD HH:MM:SS" with time shown in 24-hour format, and the date and time 02513 // separated by one blank character [20.H]. When the date and time are unknown, all the character spaces except 02514 // colons (":") may be filled with blank characters, or else the Interoperability field may be filled with blank characters. 02515 // The character string length is 20 bytes including NULL for termination. When the field is left blank, it is treated as 02516 // unknown. 02517 36867, 02518 TIFF_ASCII 02519 // Count = 20 02520 // Default = none 02521 },{ 02522 "DateTimeDigitized", 02523 // The date and time when the image was stored as digital data. If, for example, an image was captured by DSC and at the same 02524 // time the file was recorded, then the DateTimeOriginal and DateTimeDigitized will have the same contents. The format is 02525 // "YYYY:MM:DD HH:MM:SS" with time shown in 24-hour format, and the date and time separated by one blank character [20.H]. 02526 // When the date and time are unknown, all the character spaces except colons (":") may be filled with blank characters, or else 02527 // the Interoperability field may be filled with blank characters. The character string length is 20 bytes including NULL for 02528 // termination. When the field is left blank, it is treated as unknown. 02529 36868, 02530 TIFF_ASCII 02531 // Count = 20 02532 // Default = none 02533 },{ 02534 "SubsecTime", 02535 // A tag used to record fractions of seconds for the DateTime tag. 02536 37520, 02537 TIFF_ASCII 02538 // Count = Any 02539 // Default = none 02540 },{ 02541 "SubsecTimeOriginal", 02542 // A tag used to record fractions of seconds for the DateTimeOriginal tag. 02543 37521, 02544 TIFF_ASCII 02545 // N = Any 02546 // Default = none 02547 },{ 02548 "SubsecTimeDigitized", 02549 // A tag used to record fractions of seconds for the DateTimeDigitized tag. 02550 37522, 02551 TIFF_ASCII 02552 // N = Any 02553 // Default = none 02554 // Note-Recording subsecond data (SubsecTime, SubsecTimeOriginal, SubsecTimeDigitized) 02555 // The tag type is ASCII and the string length including NULL is variable length. When the number of valid 02556 // digits is up to the second decimal place, the subsecond value goes in the Value position. When it is up to 02557 // four decimal places, an address value is Interoperability, with the subsecond value put in the location 02558 // pointed to by that address. (Since the count of ASCII type field Interoperability is a value that includes 02559 // NULL, when the number of valid digits is up to four decimal places the count is 5, and the offset value goes 02560 // in the Value Offset field. See section 2.6.2.) Note that the subsecond tag differs from the DateTime tag and 02561 // other such tags already defined in TIFF Rev. 6.0, and that both are recorded in the Exif IFD. 02562 // Ex.: September 9, 1998, 9:15:30.130 (the number of valid digits is up to the third decimal place) 02563 // DateTime 1996:09:01 09:15:30 [NULL] 02564 // SubSecTime 130 [NULL] 02565 // If the string length is longer than the number of valid digits, the digits are aligned with the start of the area 02566 // and the rest is filled with blank characters [20.H]. If the subsecond data is unknown, the Interoperability 02567 // area can be filled with blank characters. 02568 // Examples when subsecond data is 0.130 seconds: 02569 // Ex. 1) '1','3','0',[NULL] 02570 // Ex. 2) '1','3','0',[20.H],[NULL] 02571 // Ex. 3) '1','3','0', [20.H], [20.H], [20.H], [20.H], [20.H], [NULL] 02572 // Example when subsecond data is unknown: 02573 // Ex. 4) [20.H], [20.H], [20.H], [20.H], [20.H], [20.H], [20.H], [20.H], [NULL] 02574 },{ 02575 "ExposureTime", 02576 // Exposure time, given in seconds (sec). 02577 33434, 02578 TIFF_RATIONAL 02579 // Count = 1 02580 // Default = none 02581 },{ 02582 "FNumber", 02583 // The F number. 02584 33437, 02585 TIFF_RATIONAL 02586 // Count = 1 02587 // Default = none 02588 }, 02589 { 02590 "ExifIfd", 02591 // Exif IFD offset tag 02592 34665, 02593 TIFF_LONG 02594 // Count = 1 02595 // Default = None 02596 // A pointer to the Exif IFD. Exif IFD has the same 02597 // structure as that of the IFD specified in 02598 // TIFF. Ordinarily, however, it does not contain image 02599 // data as in the case of TIFF. 02600 }, 02601 { 02602 "GPSIfd", 02603 // GPS IFD offset tag 02604 34853, 02605 TIFF_LONG 02606 // Count = 1 02607 // Default = None 02608 // A pointer to the GPS Info IFD. 02609 }, 02610 { 02611 "InteroperabilityIfd", 02612 // EXIF Interoperability IFD offset tag 02613 40965, 02614 TIFF_LONG 02615 // Count = 1 02616 // Default = None 02617 // A pointer to the EXIF Interoperability IFD. 02618 }, 02619 { 02620 "ExposureProgram", 02621 // The class of the program used by the camera to set exposure when the picture is taken. The tag values are as 02622 // follows. 02623 34850, 02624 TIFF_SHORT 02625 // Count = 1 02626 // Default = 0 02627 // 0 = Not defined 02628 // 1 = Manual 02629 // 2 = Normal program 02630 // 3 = Aperture priority 02631 // 4 = Shutter priority 02632 // 5 = Creative program (biased toward depth of field) 02633 // 6 = Action program (biased toward fast shutter speed) 02634 // 7 = Portrait mode (for closeup photos with the background out of focus) 02635 // 8 = Landscape mode (for landscape photos with the background in focus) 02636 // Other = reserved 02637 },{ 02638 "SpectralSensitivity", 02639 // Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible 02640 // with the standard developed by the ASTM Technical committee. 02641 34852, 02642 TIFF_ASCII 02643 // Count = Any 02644 // Default = none 02645 },{ 02646 "ISOSpeedRatings", 02647 // Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232. 02648 34855, 02649 TIFF_SHORT 02650 // Count = Any 02651 // Default = none 02652 // Also called "PhotographicSensitivity" in EXIF 2.3. 02653 // Can be several different values, depending on value of 02654 // SensitivityType tag. 02655 02656 },{ 02657 "OECF", 02658 // Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524. OECF is the relationship between 02659 // the camera optical input and the image values. 02660 34856, 02661 TIFF_UNDEFINED 02662 // Count = ANY 02663 // Default = none 02664 // When this tag records an OECF of m rows and n columns, the values are as in Figure 10. 02665 // Length Type Meaning 02666 // 2 SHORT Columns = n 02667 // 2 SHORT Rows = m 02668 // Any ASCII 0th column item name (NULL terminated) 02669 // : : : 02670 // Any ASCII n-1th column item name (NULL terminated) 02671 // 8 SRATIONAL OECF value [0,0] 02672 // : : : 02673 // 8 SRATIONAL OECF value [n-1,0] 02674 // 8 SRATIONAL OECF value [0,m-1] 02675 // : : : 02676 // 8 SRATIONAL OECF value [n-1,m-1] 02677 // Figure 10 OECF Description 02678 // Table 9 gives a simple example. 02679 // Table 9 Example of Exposure and RGB Output Level 02680 // Camera log Aperture R Output Level G Output Level B Output Level 02681 // -3.0 10.2 12.4 8.9 02682 // -2.0 48.1 47.5 48.3 02683 // -1.0 150.2 152.0 149.8 02684 }, 02685 { 02686 "SensitivityType", 02687 // Indicates which of the parameters of ISO12232 is the PhotographicSensitivity tag. 02688 34864, 02689 TIFF_SHORT 02690 // Count = 1 02691 // Default = none 02692 // 0 : Unknown 02693 // 1 : Standard output sensitivity (SOS) 02694 // 2 : Recommended Exposure Index (REI) 02695 // 3 : ISO speed 02696 // 4 : SOS and REI 02697 // 5 : SOS and ISO 02698 // 6 : REI and ISO 02699 // 7 : SOS, REI, and ISO 02700 }, 02701 { 02702 "ShutterSpeedValue", 02703 // Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting (see Annex C). 02704 37377, 02705 TIFF_SRATIONAL 02706 // Count = 1 02707 // Default = none 02708 },{ 02709 "ApertureValue", 02710 // The lens aperture. The unit is the APEX value. 02711 37378, 02712 TIFF_RATIONAL 02713 // Count = 1 02714 // Default = none 02715 },{ 02716 "BrightnessValue", 02717 // The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99. Note that 02718 // if the numerator of the recorded value is FFFFFFFF.H, Unknown shall be indicated. 02719 37379, 02720 TIFF_SRATIONAL 02721 // Count = 1 02722 // Default = none 02723 },{ 02724 "ExposureBiasValue", 02725 // The exposure bias. The unit is the APEX value. Ordinarily it is given in the range of –99.99 to 99.99. 02726 37380, 02727 TIFF_SRATIONAL 02728 // Count = 1 02729 // Default = none 02730 },{ 02731 "MaxApertureValue", 02732 // The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, 02733 // but it is not limited to this range. 02734 37381, 02735 TIFF_RATIONAL 02736 // Count = 1 02737 // Default = none 02738 },{ 02739 "SubjectDistance", 02740 // The distance to the subject, given in meters. Note that if the numerator of the recorded value is FFFFFFFF.H, 02741 // Infinity shall be indicated; and if the numerator is 0, Distance unknown shall be indicated. 02742 37382, 02743 TIFF_RATIONAL 02744 // Count = 1 02745 // Default = none 02746 },{ 02747 "MeteringMode", 02748 // The metering mode. 02749 37383, 02750 TIFF_SHORT 02751 // Count = 1 02752 // Default = 0 02753 // 0 = unknown 02754 // 1 = Average 02755 // 2 = CenterWeightedAverage 02756 // 3 = Spot 02757 // 4 = MultiSpot 02758 // 5 = Pattern 02759 // 6 = Partial 02760 // Other = reserved 02761 // 255 = other 02762 },{ 02763 "LightSource", 02764 // The kind of light source. 02765 37384, 02766 TIFF_SHORT 02767 // Count = 1 02768 // Default = 0 02769 // 0 = unknown 02770 // 1 = Daylight 02771 // 2 = Fluorescent 02772 // 3 = Tungsten (incandescent light) 02773 // 4 = Flash 02774 // 9 = Fine weather 02775 // 10 = Cloudy weather 02776 // 11 = Shade 02777 // 12 = Daylight fluorescent (D 5700 – 7100K) 02778 // 13 = Day white fluorescent (N 4600 – 5400K) 02779 // 14 = Cool white fluorescent (W 3900 – 4500K) 02780 // 15 = White fluorescent (WW 3200 – 3700K) 02781 // 17 = Standard light A 02782 // 18 = Standard light B 02783 // 19 = Standard light C 02784 // 20 = D55 02785 // 21 = D65 02786 // 22 = D75 02787 // 23 = D50 02788 // 24 = ISO studio tungsten 02789 // 255 = other light source 02790 // Other = reserved 02791 },{ 02792 "Flash", 02793 // This tag indicates the status of flash when the image was shot. Bit 0 indicates the flash firing status, bits 1 and 2 02794 // indicate the flash return status, bits 3 and 4 indicate the flash mode, bit 5 indicates whether the flash function is 02795 // present, and bit 6 indicates "red eye" mode (see Figure 11). 02796 37385, 02797 TIFF_SHORT 02798 // Count = 1 02799 // Values for bit 0 indicating whether the flash fired. 02800 // 0b = Flash did not fire. 02801 // 1b = Flash fired. 02802 // Values for bits 1 and 2 indicating the status of returned light. 02803 // 00b = No strobe return detection function 02804 // 01b = reserved 02805 // 10b = Strobe return light not detected. 02806 // 11b = Strobe return light detected. 02807 // Values for bits 3 and 4 indicating the camera's flash mode. 02808 // 00b = unknown 02809 // 01b = Compulsory flash firing 02810 // 10b = Compulsory flash suppression 02811 // 11b = Auto mode 02812 // Values for bit 5 indicating the presence of a flash function. 02813 // 0b = Flash function present 02814 // 1b = No flash function 02815 // Values for bit 6 indicating the camera's red-eye mode. 02816 // 0b = No red-eye reduction mode or unknown 02817 // 1b = Red-eye reduction supported 02818 },{ 02819 "SubjectArea", 02820 // This tag indicates the location and area of the main subject in the overall scene. 02821 37396, 02822 TIFF_SHORT 02823 // Count = 2 or 3 or 4 02824 // Default = none 02825 // The subject location and area are defined by Count values as follows. 02826 // Count = 2 Indicates the location of the main subject as coordinates. The first value is the X coordinate and the 02827 // second is the Y coordinate. 02828 // Count = 3 The area of the main subject is given as a circle. The circular area is expressed as center coordinates 02829 // and diameter. The first value is the center X coordinate, the second is the center Y coordinate, and the 02830 // third is the diameter. (See Figure 12.) 02831 // Count = 4 The area of the main subject is given as a rectangle. The rectangular area is expressed as center 02832 // coordinates and area dimensions. The first value is the center X coordinate, the second is the center Y 02833 // coordinate, the third is the width of the area, and the fourth is the height of the area. (See Figure 13.) 02834 // Note that the coordinate values, width, and height are expressed in relation to the upper left as origin, prior to 02835 // rotation processing as per the Rotation tag. 02836 },{ 02837 "FocalLength", 02838 // The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera. 02839 37386, 02840 TIFF_RATIONAL 02841 // Count = 1 02842 // Default = none 02843 },{ 02844 "FlashEnergy", 02845 // Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds 02846 // (BCPS). 02847 41483, 02848 TIFF_RATIONAL 02849 // Count = 1 02850 // Default = none 02851 },{ 02852 "SpatialFrequencyResponse", 02853 // This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, 02854 // image height, and diagonal direction, as specified in ISO 12233. 02855 41484, 02856 TIFF_UNDEFINED 02857 // Count = ANY 02858 // Default = none 02859 // When the spatial frequency response for m rows and n columns is recorded, the values are as shown in Figure 14. 02860 // Length Type Meaning 02861 // 2 SHORT Columns = n 02862 // 2 SHORT Rows = m 02863 // Any ASCII 0th column item name (NULL terminated) 02864 // : : : 02865 // Any ASCII n-1th column item name (NULL terminated) 02866 // 8 RATIONAL SFR value [0,0] 02867 // : : : 02868 // 8 RATIONAL SFR value [n-1,0] 02869 // 8 RATIONAL SFR value [0,m-1] 02870 // : : : 02871 // 8 RATIONAL SFR value [n-1,m-1] 02872 // Figure 14 Spatial Frequency Response Description 02873 // Table 10 gives a simple example. 02874 // Table 10 Example of Spatial Frequency Response 02875 // Spatial Frequency (lw/ph) Along Image Width Along Image Height 02876 // 0.1 1.00 1.00 02877 // 0.2 0.90 0.95 02878 // 0.3 0.80 0.85 02879 },{ 02880 "FocalPlaneXResolution", 02881 // Indicates the number of pixels in the image width (X) direction per FocalPlaneResolutionUnit on the camera focal 02882 // plane. 02883 41486, 02884 TIFF_RATIONAL 02885 // Count = 1 02886 // Default = none 02887 },{ 02888 "FocalPlaneYResolution", 02889 // Indicates the number of pixels in the image height (Y) direction per FocalPlaneResolutionUnit on the camera focal 02890 // plane. 02891 41487, 02892 TIFF_RATIONAL 02893 // Count = 1 02894 // Default = none 02895 },{ 02896 "FocalPlaneResolutionUnit", 02897 // Indicates the unit for measuring FocalPlaneXResolution and FocalPlaneYResolution. This value is the same as the 02898 // ResolutionUnit. 02899 41488, 02900 TIFF_SHORT 02901 // Count = 1 02902 // Default = 2 (inch) 02903 // Note on use of tags concerning focal plane resolution 02904 // These tags record the actual focal plane resolutions of the main image which is written as a file after processing 02905 // instead of the pixel resolution of the image sensor in the camera. It should be noted carefully that the data from 02906 // the image sensor is resampled. 02907 // These tags are used at the same time as a FocalLength tag when the angle of field of the recorded image is to 02908 // be calculated precisely. 02909 },{ 02910 "SubjectLocation", 02911 // Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the 02912 // main subject relative to the left edge, prior to rotation processing as per the Rotation tag. The first value indicates 02913 // the X column number and second indicates the Y row number. 02914 41492, 02915 TIFF_SHORT 02916 // Count = 2 02917 // Default = none 02918 // When a camera records the main subject location, it is recommended that the SubjectArea tag be used instead of this tag. 02919 },{ 02920 "ExposureIndex", 02921 // Indicates the exposure index selected on the camera or input device at the time the image is captured. 02922 41493, 02923 TIFF_RATIONAL 02924 // Count = 1 02925 // Default = none 02926 },{ 02927 "SensingMethod", 02928 // Indicates the image sensor type on the camera or input device. The values are as follows. 02929 41495, 02930 TIFF_SHORT 02931 // Count = 1 02932 // Default = none 02933 // 1 = Not defined 02934 // 2 = One-chip color area sensor 02935 // 3 = Two-chip color area sensor 02936 // 4 = Three-chip color area sensor 02937 // 5 = Color sequential area sensor 02938 // 7 = Trilinear sensor 02939 // 8 = Color sequential linear sensor 02940 // Other = reserved 02941 },{ 02942 "FileSource", 02943 // Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating 02944 // that the image was recorded on a DSC. 02945 41728, 02946 TIFF_UNDEFINED 02947 // Count = 1 02948 // Default = 3 02949 // 3 = DSC 02950 // Other = reserved 02951 },{ 02952 "SceneType", 02953 // Indicates the type of scene. If a DSC recorded the image, this tag value shall always be set to 1, indicating that the 02954 // image was directly photographed. 02955 41729, 02956 TIFF_UNDEFINED 02957 // Count = 1 02958 // Default = 1 02959 // 1 = A directly photographed image 02960 // Other = reserved 02961 },{ 02962 "CFAPatternEXIF", 02963 // Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is 02964 // used. It does not apply to all sensing methods. 02965 41730, 02966 TIFF_UNDEFINED 02967 // Count = ANY 02968 // Default = none 02969 // Figure 15 shows how a CFA pattern is recorded for a one-chip color area sensor when the color filter array is 02970 // repeated in m x n (vertical x lateral) pixel units. 02971 // Length Type Meaning 02972 // 2 SHORT Horizontal repeat pixel unit = n 02973 // 2 SHORT Vertical repeat pixel unit = m 02974 // 1 BYTE CFA value [0.0] 02975 // : : : 02976 // 1 BYTE CFA value [n-1.0] 02977 // 1 BYTE CFA value [0.m-1] 02978 // : : : 02979 // 1 BYTE CFA value [n-1.m-1] 02980 // Figure 15 CFA Pattern Description 02981 // The relation of color filter color to CFA value is shown in Table 11. 02982 // Table 11 Color Filter Color and CFA Value 02983 // Filter Color CFA Value 02984 // RED 00.H 02985 // GREEN 01.H 02986 // BLUE 02.H 02987 // CYAN 03.H 02988 // MAGENTA 04.H 02989 // YELLOW 05.H 02990 // WHITE 06.H 02991 },{ 02992 "CustomRendered", 02993 // This tag indicates the use of special processing on image data, such as rendering geared to output. When special 02994 // processing is performed, the reader is expected to disable or minimize any further processing. 02995 41985, 02996 TIFF_SHORT 02997 // Count = 1 02998 // Default = 0 02999 // 0 = Normal process 03000 // 1 = Custom process 03001 // Other = reserved 03002 },{ 03003 "ExposureMode", 03004 // This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a 03005 // series of frames of the same scene at different exposure settings. 03006 41986, 03007 TIFF_SHORT 03008 // Count = 1 03009 // Default = none 03010 // 0 = Auto exposure 03011 // 1 = Manual exposure 03012 // 2 = Auto bracket 03013 // Other = reserved 03014 },{ 03015 "WhiteBalance", 03016 // This tag indicates the white balance mode set when the image was shot. 03017 41987, 03018 TIFF_SHORT 03019 // Count = 1 03020 // Default = none 03021 // 0 = Auto white balance 03022 // 1 = Manual white balance 03023 // Other = reserved 03024 },{ 03025 "DigitalZoomRatio", 03026 // This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this 03027 // indicates that digital zoom was not used. 03028 41988, 03029 TIFF_RATIONAL 03030 // Count = 1 03031 // Default = none 03032 },{ 03033 "FocalLengthIn35mmFilm", 03034 // This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal 03035 // length is unknown. Note that this tag differs from the FocalLength tag. 03036 41989, 03037 TIFF_SHORT 03038 // Count = 1 03039 // Default = none 03040 },{ 03041 "This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was", 03042 // shot. Note that this differs from the scene type (SceneType) tag. 03043 41990, 03044 TIFF_SHORT 03045 // Count = 1 03046 // Default = 0 03047 // 0 = Standard 03048 // 1 = Landscape 03049 // 2 = Portrait 03050 // 3 = Night scene 03051 // Other = reserved 03052 },{ 03053 "GainControl", 03054 // This tag indicates the degree of overall image gain adjustment. 03055 41991, 03056 TIFF_SHORT 03057 // Count = 1 03058 // Default = none 03059 // 0 = None 03060 // 1 = Low gain up 03061 // 2 = High gain up 03062 // 3 = Low gain down 03063 // 4 = High gain down 03064 // Other = reserved 03065 },{ 03066 "Contrast", 03067 // This tag indicates the direction of contrast processing applied by the camera when the image was shot. 03068 41992, 03069 TIFF_SHORT 03070 // Count = 1 03071 // Default = 0 03072 // 0 = Normal 03073 // 1 = Soft 03074 // 2 = Hard 03075 // Other = reserved 03076 },{ 03077 "Saturation", 03078 // This tag indicates the direction of saturation processing applied by the camera when the image was shot. 03079 41993, 03080 TIFF_SHORT 03081 // Count = 1 03082 // Default = 0 03083 // 0 = Normal 03084 // 1 = Low saturation 03085 // 2 = High saturation 03086 // Other = reserved 03087 },{ 03088 "Sharpness", 03089 // This tag indicates the direction of sharpness processing applied by the camera when the image was shot. 03090 41994, 03091 TIFF_SHORT 03092 // Count = 1 03093 // Default = 0 03094 // 0 = Normal 03095 // 1 = Soft 03096 // 2 = Hard 03097 // Other = reserved 03098 },{ 03099 "DeviceSettingDescription", 03100 // This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to 03101 // indicate the picture-taking conditions in the reader. 03102 41995, 03103 TIFF_UNDEFINED 03104 // Count = Any 03105 // Default = none 03106 // The information is recorded in the format shown in Figure 17. The data is recorded in Unicode using SHORT type 03107 // for the number of display rows and columns and UNDEFINED type for the camera settings. The Unicode (UCS-2) 03108 // string including Signature is NULL terminated. The specifics of the Unicode string are as given in ISO/IEC 10464-1. 03109 // Length Type Meaning 03110 // 2 SHORT Display columns 03111 // 2 SHORT Display rows 03112 // Any UNDEFINED Camera setting-1 03113 // Any UNDEFINED Camera setting-2 03114 // : : : 03115 // Any UNDEFINED Camera setting-n 03116 // Figure 17 Format used to record picture-taking conditions 03117 },{ 03118 "SubjectDistanceRange", 03119 // This tag indicates the distance to the subject. 03120 41996, 03121 TIFF_SHORT 03122 // Count = 1 03123 // Default = none 03124 // 0 = unknown 03125 // 1 = Macro 03126 // 2 = Close view 03127 // 3 = Distant view 03128 // Other = reserved 03129 },{ 03130 "ImageUniqueID", 03131 // This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to 03132 // hexadecimal notation and 128-bit fixed length. 03133 42016, 03134 TIFF_ASCII 03135 // Count = 33 03136 // Default = none 03137 } 03138 }; 03139 03140 03141 TiffEntryInfo const* tiffEntryLookup(uint16_t tag) { 03142 static std::map<uint16_t, TiffEntryInfo const*> entriesByTag; 03143 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 03144 static bool initialized = false; 03145 03146 // Build map if not yet initialized. Annoying thread-safety mutex 03147 if (!initialized) { 03148 pthread_mutex_lock(&mutex); 03149 if (!initialized) { 03150 for (unsigned int i=0; i < sizeof(tiffEntryTypes)/sizeof(TiffEntryInfo); i++) { 03151 entriesByTag[tiffEntryTypes[i].tag] = tiffEntryTypes+i; 03152 } 03153 initialized = true; 03154 } 03155 pthread_mutex_unlock(&mutex); 03156 } 03157 03158 std::map<uint16_t, TiffEntryInfo const*>::iterator it = entriesByTag.find(tag); 03159 if (it == entriesByTag.end()) return NULL; 03160 return it->second; 03161 } 03162 03163 // The lookup by entry name is done using basic c char arrays, to avoid having to make duplicate strings of the whole big tiffEntryTypes table. 03164 03165 // Need to compare const char* as strings, not pointers. 03166 struct TiffNameLess { 03167 bool operator()(const char *l, const char *r) const { 03168 return strcmp(l, r) < 0; 03169 } 03170 }; 03171 03172 TiffEntryInfo const* tiffEntryLookup(const std::string &entryName) { 03173 static std::map<const char*, TiffEntryInfo const*, TiffNameLess> entriesByName; 03174 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 03175 static bool initialized = false; 03176 03177 // Build map if not yet initialized. Annoying thread-safety mutex 03178 if (!initialized) { 03179 pthread_mutex_lock(&mutex); 03180 if (!initialized) { 03181 for (unsigned int i=0; i < sizeof(tiffEntryTypes)/sizeof(TiffEntryInfo); i++) { 03182 entriesByName[tiffEntryTypes[i].name] = tiffEntryTypes+i; 03183 } 03184 initialized = true; 03185 } 03186 pthread_mutex_unlock(&mutex); 03187 } 03188 std::map<const char*, TiffEntryInfo const*, TiffNameLess>::iterator it = entriesByName.find(entryName.c_str()); 03189 if (it == entriesByName.end()) return NULL; 03190 return it->second; 03191 } 03192 03193 }