home *** CD-ROM | disk | FTP | other *** search
- --------I-TIFF------------------------------
-
- The TIFF file format was designed jointly by Aldus and Microsoft with
- leading scanner vendors to faciliate incorporating scanned images into
- publishing. The described TIFF specification is TIFF 5.0. A TIFF file
- consists of several different blocks which define the palette data or
- the LZW-compressed body among other things. TIFF files can be in
- Motorola _or_ Intel byte order, depending on the first word. If it is
- 'II', the byte order is in Intel order, if it is 'MM', then you have
- Motorola byte ordering.
-
- Each TIFF file begins with a image file header which points to one or
- more image file directories, which contain the image data and image
- information.
-
- The format of the image header :
- OFFSET Count TYPE Description
- 0000h 2 char ID='II', ID='MM'
- This is the identification, 'II' stands for
- Intel byte order, 'MM' for Motorola byte
- order. The following data must be interpreted
- accordingly !
- 0002h 1 word TIFF "version number". This version number
- never changed and the value (42) was choosen
- for its deep philosophical value. In fact, if
- the version number ever changes, this means
- that radical changes to the TIFF format have
- been made, and a TIFF reader should give up
- immediately.
- You can consider this word to be a part of the
- header ID.
- 0004h 1 dword Offset of first image directory in file form
- start of file.
- The first image directory must begin on an
- even byte boundary. The image directory may
- follow the image data it describes. The
- image directory is described below.
-
- An organization may wish to store information that is meaningful to only
- that organization in a TIFF file. Tags numbered 32768 or higher are
- reserved for that purpose. Upon request, the administrator will allocate
- and register a block of private tags for an organization. Private
- enumerated values can be accommodated in a similar fashion.
-
- The format of the image file directory (IFD) :
- All entries are sorted in ascending order by the tag field.
- OFFSET Count TYPE Description
- 0000h 1 word Number of entries
- ="NUM"
- 0002h "NUM" rec Field descriptor
- 1 word Field tag, see below
- 1 word Field type
- 1 - byte
- 2 - ASCII string, counted in length.
- Most often an ASCIIZ string, the
- trailing zero is counted with the
- data length.
- 3 - word
- 4 - dword / uword
- 5 - rational (2 dwords, numerator and denominator)
- 1 dword Length of the field in units of the data type.
- A single 16-bit word has the length 1.
- 1 dword Data offset of the field. The data starts
- on a word boundary, thus the dword should
- be even. The data for the field may be
- anywhere in the file, even after the image
- data. If the data size is less or equal to
- 4 bytes (determined by the field type and
- length), then this offset is not a offset
- but instead the data itself, to save space.
- If the data size is less than 4 bytes, the
- data is stored left-justified within the 4
- bytes of the offset field.
- 0002h+
- "NUM"*12 1 dword Offset of next IFD in file, 0 if none follow
-
- If a certain field in the IFD does not exist, you have to presume the
- default values. The different fields are :
-
- --- BitsPerSample
- Tag = 258 (102)
- Type = word
- N = SamplesPerPixel
- Default = 1
-
- Number of bits per sample. Note that this tag allows a different number
- of bits per sample for each sample corresponding to a pixel. For
- example, RGB color data could use a different number of bits per sample
- for each of the three color planes.
-
- --- ColorMap
- Tag = 320 (140)
- Type = word
- N = 3 * (2**BitsPerSample)
- No default.ColorMap must be included in all palette color images.
-
- This tag defines a Red-Green-Blue color map for palette color images.
- The palette color pixel value is used to index into all 3 subcurves. The
- subcurves are stored sequentially. The Red entries come first, followed
- by the Green entries, followed by the Blue entries. The width of each
- entry is 16 bits, as implied by the type of word. 0 represents the
- minimum intensity, and 65535 represents the maximum intensity.
-
- --- ColorResponseCurves
- Tag = 301 (12D)
- Type = word
- N = 3 * (2**BitsPerSample)
- Default: curves based on the NTSC recommended gamma of 2.2.
-
- This tag defines three color response curves, one each for Red, Green
- and Blue color information. The Red entries come first, followed by the
- Green entries, followed by the Blue entries. The length of each subcurve
- is 2**BitsPerSample, using the BitsPerSample value corresponding to the
- respective primary. The width of each entry is 16 bits, as implied by
- the type of word. The purpose of the color response curves is to refine
- the content of RGB color images.
-
- --- Compression
- Tag = 259 (103)
- Type = word
- N = 1
- Default = 1.
-
- 1 = No compression, but pack data into bytes as tightly as possible,
- with no unused bits except at the end of a row. The bytes are
- stored as an array of bytes, for BitsPerSample <= 8, word if
- BitsPerSample > 8 and <= 16, and dword if BitsPerSample > 16 and <=
- 32. The byte ordering of data >8 bits must be consistent with that
- specified in the TIFF file header (bytes 0 and 1). Rows are
- required to begin on byte boundaries.
-
- 2 = CCITT Group 3 1-Dimensional Modified Huffman run length encoding.
- See ALGRTHMS.txt BitsPerSample must be 1, since this type of
- compression is defined only for bilevel images (like FAX images...)
-
- 3 = Facsimile-compatible CCITT Group 3, exactly as specified in
- "Standardization of Group 3 facsimile apparatus for document
- transmission," Recommendation T.4, Volume VII, Fascicle VII.3,
- Terminal Equipment and Protocols for Telematic Services, The
- International Telegraph and Telephone Consultative Committee
- (CCITT), Geneva, 1985, pages 16 through 31. Each strip must begin
- on a byte boundary. (But recall that an image can be a single
- strip.) Rows that are not the first row of a strip are not required
- to begin on a byte boundary. The data is stored as bytes, not words
- - byte-reversal is not allowed. See the Group3Options field for
- Group 3 options such as 1D vs 2D coding.
-
- 4 = Facsimile-compatible CCITT Group 4, exactly as specified in
- "Facsimile Coding Schemes and Coding Control Functions for Group 4
- Facsimile Apparatus," Recommendation T.6, Volume VII, Fascicle
- VII.3, Terminal Equipment and Protocols for Telematic Services, The
- International Telegraph and Telephone Consultative Committee
- (CCITT), Geneva, 1985, pages 40 through 48. Each strip must begin
- on a byte boundary. Rows that are not the first row of a strip are
- not required to begin on a byte boundary. The data is stored as
- bytes, not words. See the Group4Options field for Group 4 options.
-
- 5 = LZW Compression, for grayscale, mapped color, and full color images.
- See ALGRTHMS.txt
-
- 32773 = PackBits compression, a simple byte oriented run length scheme
- for 1-bit images. See Appendix C.
-
- Data compression only applies to raster image data, as pointed to by
- StripOffsets.
-
- --- GrayResponseCurve
- Tag = 291 (123)
- Type = word
- N = 2**BitsPerSample
-
- The purpose of the gray response curve and the gray units is to provide
- more exact photometric interpretation information for gray scale image
- data, in terms of optical density.
-
- --- GrayResponseUnit
- Tag = 290 (122)
- Type = word
- N = 1
- For historical reasons, the default is 2. However, for greater accuracy,
- 3 is recommended.
-
- 1 = Number represents tenths of a unit.
- 2 = Number represents hundredths of a unit.
- 3 = Number represents thousandths of a unit.
- 4 = Number represents ten-thousandths of a unit.
- 5 = Number represents hundred-thousandths of a unit.
-
- --- ImageLength
- Tag = 257 (101)
- Type = word or dword
- N = 1
- No default.
-
- The image's length (height) in pixels (Y:vertical). The number of rows
- (sometimes described as "scan lines") in the image.
-
- --- ImageWidth
- Tag = 256 (100)
- Type = word or dword
- N = 1
- No default.
-
- The image's width, in pixels (X:horizontal). The number of columns in
- the image.
-
- --- NewSubfileType
- Tag = 254 (FE)
- Type = dword
- N = 1
- Default is 0.
-
- A general indication of the kind of data that is contained in this
- subfile. This field is made up of a set of 32 flag bits. Unused bits are
- expected to be 0. Bit 0 is the low-order bit.
-
- Currently defined values for the bitmap are:
- 0 - Image is reduced of another TIFF image in this file
- 1 - Image is a single page of a multi-page
- 2 - Image is a transparency mask for another image in this file
-
- --- PhotometricInterpretation
- Tag = 262 (106)
- Type = word
- N = 1
- No default.
-
- 0 = For bilevel and grayscale images: 0 is imaged as white.
- 2**BitsPerSample-1 is imaged as black. If GrayResponseCurve
- exists, it overrides the PhotometricInterpretation value.
-
- 1 = For bilevel and grayscale images: 0 is imaged as black.
- 2**BitsPerSample-1 is imaged as white. If GrayResponseCurve
- exists, it overrides the PhotometricInterpretation value.
-
- 2 = RGB. In the RGB model, a color is described as a combination
- of the three primary colors of light (red, green, and blue) in
- particular concentrations. For each of the three samples, 0
- represents minimum intensity, and 2**BitsPerSample - 1 represents
- maximum intensity. For PlanarConfiguration = 1, the samples are stored in
- the indicated order: first Red, then Green, then Blue. For
- PlanarConfiguration = 2, the StripOffsets for the sample planes
- are stored in the indicated order: first the Red sample plane
- StripOffsets, then the Green plane StripOffsets, then the Blue
- plane StripOffsets.
-
- 3 = "Palette color." In this mode, a color is described with a
- single sample. The sample is used as an index into ColorMap.
- The sample is used to index into each of the red, green and blue
- curve tables to retrieve an RGB triplet defining an actual color.
- When this PhotometricInterpretation value is used, the color
- response curves must also be supplied. SamplesPerPixel must be
- 1.
-
- 4 = Transparency Mask. This means that the image is used to
- define an irregularly shaped region of another image in the same
- TIFF file. SamplesPerPixel and BitsPerSample must be 1.
- PackBits compression is recommended. The 1-bits define the
- interior of the region; the 0-bits define the exterior of the
- region. The Transparency Mask must have the same ImageLength and
- ImageWidth as the main image.
-
- PlanarConfiguration
- Tag = 284 (11C)
- Type = word
- N = 1
- Default is 1.
-
- 1 = The sample values for each pixel are stored contiguously, so that
- there is a single image plane. See PhotometricInterpretation to
- determine the order of the samples within the pixel data. So, for
- RGB data, the data is stored RGBRGBRGB...and so on.
-
- 2 = The samples are stored in separate "sample planes." The values in
- StripOffsets and StripByteCounts are then arranged as a
- 2-dimensional array, with SamplesPerPixel rows and StripsPerImage
- columns. (All of the columns for row 0 are stored first, followed
- by the columns of row 1, and so on.) PhotometricInterpretation
- describes the type of data that is stored in each sample plane. For
- example, RGB data is stored with the Red samples in one sample
- plane, the Green in another, and the Blue in another.
-
- If SamplesPerPixel is 1, PlanarConfiguration is irrelevant, and should
- not be included.
-
- Predictor
- Tag = 317 (13D)
- Type = word
- N = 1
- Default is 1.
-
- To be used when Compression=5 (LZW).
-
- 1 = No prediction scheme used before coding.
- 2 = Horizontal differencing. See Appendix I.
-
- ResolutionUnit
- Tag = 296 (128)
- Type = word
- N = 1
- Default is 2.
-
- To be used with XResolution and YResolution.
-
- 1 = No absolute unit of measurement. Used for images that may
- have a non-square aspect ratio, but no meaningful absolute
- dimensions. The drawback of ResolutionUnit=1 is that different
- applications will import the image at different sizes. Even if
- the decision is quite arbitrary, it might be better to use dots
- per inch or dots per centimeter, and pick XResolution and
- YResolution such that the aspect ratio is correct and the maximum
- dimension of the image is about four inches (the "four" is quite
- arbitrary.)
- 2 = Inch.
- 3 = Centimeter.
-
- RowsPerStrip
- Tag = 278 (116)
- Type = word or dword
- N = 1
- Default is 2**32 - 1, which is effectively infinity. That is,
- the entire image is one strip. Recomended is a strip size of 8K.
-
- The number of rows per strip. The image data is organized into
- strips for fast access to individual rows when the data is
- compressed - though this field is valid even if the data is not
- compressed.
-
- --- SamplesPerPixel
- Tag = 277 (115)
- Type = word
- N = 1
- Default = 1.
-
- The number of samples per pixel. SamplesPerPixel is 1 for
- bilevel, grayscale, and palette color images. SamplesPerPixel is
- 3 for RGB images.
-
- --- StripByteCounts
- Tag = 279 (117)
- Type = word or dword
- N = StripsPerImage for PlanarConfiguration equal to 1.
- = SamplesPerPixel * StripsPerImage for PlanarConfiguration equal to 2
- No default.
-
- For each strip, the number of bytes in that strip. The existence
- of this field greatly simplifies the chore of buffering
- compressed data, if the strip size is reasonable.
-
- --- StripOffsets
- Tag = 273 (111)
- Type = word or dword
- N = StripsPerImage for PlanarConfiguration equal to 1.
- = SamplesPerPixel * StripsPerImage for PlanarConfiguration equal to 2
- No default.
-
- For each strip, the byte offset of that strip. The offset is
- specified with respect to the beginning of the TIFF file. Note
- that this implies that each strip has a location independent of
- the locations of other strips. This feature may be useful for
- editing applications. This field is the only way for a reader to
- find the image data, and hence must exist.
-
- --- XResolution
- Tag = 282 (11A)
- Type = RATIONAL
- N = 1
- No default.
-
- The number of pixels per ResolutionUnit in the X direction, i.e.,
- in the ImageWidth direction.
-
-
- --- YResolution
- Tag = 283 (11B)
- Type = RATIONAL
- N = 1
- No default.
-
- The number of pixels per ResolutionUnit in the Y direction, i.e.,
- in the ImageLength direction.
-
- --- Artist
- Tag = 315 (13B)
- Type = ASCII
-
- Person who created the image. Copyright notice.
-
- --- DateTime
- Tag = 306 (132)
- Type = ASCII
- N = 20
-
- Date and time of image creation. Uses the format "YYYY:MM:DD HH:MM:SS",
- with hours on a 24-hour clock, and one space character between the date
- and the time. The length of the string, including the null, is 20 bytes.
-
- --- HostComputer
- Tag = 316 (13C)
- Type = ASCII
-
- "ENIAC", or whatever.
-
- --- ImageDescription
- Tag = 270 (10E)
- Type = ASCII
-
- For example, a user may wish to attach a comment such as "1988 company
- picnic" to an image.
-
- --- Make
- Tag = 271 (10F)
- Type = ASCII
-
- Manufacturer of the scanner, video digitizer, or whatever.
-
- --- Model
- Tag = 272 (110)
- Type = ASCII
-
- The model name/number of the scanner, video digitizer, or whatever.
- This tag is intended for user information only so format is arbitrary.
-
- --- Software
- Tag = 305 (131)
- Type = ASCII
-
- Name and release number of the software package that created the image.
- User information only.
-
- --- Group3Options
- Tag = 292 (124)
- Type = dword
- N = 1
-
- Those options are for fax-images stored in TIFF format. This field is
- made up of a set of 32 flag bits. Unused bits are expected to be 0. It
- is probably not safe to try to read the file if any bit of this field is
- set that you don't know the meaning of.
-
- Bit map :
- 0 - 2-dimensional coding used.
- 1 - Image is uncompressed
- 2 - Fill bits have been added before EOL codes, so that EOL always ends on a
- byte boundary.
-
- --- Group4Options
- Tag = 293 (125)
- Type = dword
- N = 1
-
- This field is made up of a set of 32 flag bits and is used for the
- images with fax group 4 compression. Unused bits are expected to be 0.
- It is probably not safe to try to read the file if any bit of this field
- is set that you don't know the meaning of. Gray scale and color coding
- schemes are under study, and will be added when finalized.
-
- For 2-D coding, each strip is encoded as if it were a separate image. In
- particular, each strip begins on a byte boundary; and the coding for the
- first row of a strip is encoded independently of the previous row, using
- horizontal codes, as if the previous row is entirely white. Each strip
- ends with the 24-bit end-of-facsimile block (EOFB).
-
- Bit map :
- 0 - reserved (unused)
- 1 - uncompressed mode is used
- 2-31 - reserved
-
- --- DocumentName
- Tag = 269 (10D)
- Type = ASCII
-
- The name of the document from which this image was scanned.
-
- --- PageName
- Tag = 285 (11D)
- Type = ASCII
-
- The name of the page from which this image was scanned.
-
- --- PageNumber
- Tag = 297 (129)
- Type = word
- N = 2
-
- This tag is used to specify page numbers of a multiple page (e.g.
- facsimile) document. Two word values are specified. The first value is
- the page number; the second value is the total number of pages in the
- document. Note that pages need not appear in numerical order. The first
- page is 0 (zero).
-
- --- XPosition
- Tag = 286 (11E)
- Type = RATIONAL
-
- The X offset of the left side of the image, with respect to the left
- side of the page, in ResolutionUnits.
-
- --- YPosition
- Tag = 287 (11F)
- Type = RATIONAL
-
- The Y offset of the top of the image, with respect to the top of the
- page, in ResolutionUnits. In the TIFF coordinate scheme, the positive Y
- direction is down, so that YPosition is always positive.
-
- --- White Point
- Tag = 318 (13E)
- Type = RATIONAL
- N = 2
- Default is the SMPTE white point, D65: x = 0.313, y = 0.329.
-
- The white point of the image. Note that this value is described using
- the 1931 CIE xyY chromaticity diagram and only the chromaticity is
- specified. The luminance component is arbitrary and not specified. This
- can correspond to the white point of a monitor that the image was
- painted on, the filter set/light source combination of a scanner, or to
- the white point of the illumination model of a rendering package. The
- ordering is x, y.
-
-
- --- PrimaryChromaticities
- Tag = 319 (13F)
- Type = RATIONAL
- N = 6
- Default is the SMPTE primary color chromaticities:
-
- Red: x = 0.635 y = 0.340
- Green: x = 0.305 y = 0.595
- Blue: x = 0.155 y = 0.070
-
- The primary color chromaticities. Note that these values are described
- using the 1931 CIE xyY chromaticity diagram and only the chromaticities
- are specified.For paint images, these represent the chromaticities of
- the monitor and for scanned images they are derived from the filter
- set/light source combination of a scanner. The ordering is red x, red y,
- green x, green y, blue x, blue y.
-
- --- SubfileType
- Tag = 255 (FF)
- Type = word
- N = 1
-
- A general indication of the kind of data that is contained in this
- subfile. Currently defined values are:
-
- 1 = full resolution image data - ImageWidth, ImageLength, and
- StripOffsets are required fields
- 2 = reduced resolution image data - ImageWidth, ImageLength, and
- StripOffsets are required fields. It is further assumed that a
- reduced resolution image is a reduced version of the entire extent
- of the corresponding full resolution data.
- 3 = single page of a multi-page image (see the PageNumber tag
- description).
-
- Continued use of this field is not recommended. Writers should instead
- use the new and more general NewSubfileType field.
-
- --- Orientation
- Tag = 274 (112)
- Type = word
- N = 1
- Default is 1.
-
- 1 = The 0th row represents the visual top of the image, and the 0th column
- represents the visual left hand side.
- 2 = The 0th row represents the visual top of the image, and the 0th column
- represents the visual right hand side.
- 3 = The 0th row represents the visual bottom of the image, and the 0th column
- represents the visual right hand side.
- 4 = The 0th row represents the visual bottom of the image, and the 0th column
- represents the visual left hand side.
- 5 = The 0th row represents the visual left hand side of the image, and the 0th
- column represents the visual top.
- 6 = The 0th row represents the visual right hand side of the image, and the 0th
- column represents the visual top.
- 7 = The 0th row represents the visual right hand side of the image, and the 0th
- column represents the visual bottom.
- 8 = The 0th row represents the visual left hand side of the image, and the 0th
- column represents the visual bottom.
-
- It is extremely costly for most readers to perform image rotation "on
- the fly", i.e., when importing and printing; and users of most desktop
- publishing applications do not expect a file imported by the
- application to be altered permanently in any way.
-
- Threshholding
- Tag = 263 (107)
- Type = word
- N = 1
-
- 1 = a bilevel "line art" scan. BitsPerSample must be 1.
- 2 = a "dithered" scan, usually of continuous tone data such as photographs.
- BitsPerSample must be 1.
- 3 = Error Diffused.
-
- ColorImageType
- Tag = 318 (13E)
- Type = word
- N = 1
- Default is 1.
-
- Gives TIFF color image readers a better idea of what kind of color image
- it is. There will be borderline cases.
-
- 1 = Continuous tone, natural image.
- 2 = Synthetic image, using a greatly restricted range of colors.
- Such images are produced by most color paint programs. See ColorList for
- a list of colors used in this image.
-
- ColorList
- Tag = 319 (13F)
- Type = BYTE or word
- N = the number of colors that are used in this image, times SamplesPerPixel
-
- A list of colors that are used in this image. Use of this field is only
- practical for images containing a greatly restricted (usually less than
- or equal to 256) range of colors. ColorImageType should be 2. See
- ColorImageType.
-
- The list is organized as an array of RGB triplets, with no pad. The RGB
- triplets are not guaranteed to be in any particular order. Note that the
- red, green, and blue components can either be a BYTE or a word in
- length. BYTE should be sufficient for most applications.
-
- EXTENSION:TIF,TIFF
- OCCURENCES:PC,MAC,UNIX
- PROGRAMS:Aldus Pagemaker, Paintbrush
- REFERENCE:
- SEE ALSO:
- VALIDATION:
-