ADOBE.TXT


Remove Frame

With the permission of Adobe, this chapter is excerpted from:


Adobe Photoshop 3.0.4 

Software Development Kit 

Revised: 16 July 1995 

Adobe Photoshop 3.0.4 Software Development Kit 
Copyright 1991-95 Adobe Systems Incorporated. All rights reserved. 
Portions Copyright 1990-91 Thomas Knoll

The information in this document is furnished for informational use only, is 
subject to change without notice, and should not be construed as a 
commitment by Adobe Systems Incorporated. Adobe Systems Incorporated assumes 
no responsibility or liability for any errors or inaccuracies that may 
appear in this document. 

The software described in this document is furnished under license 
and may only be used or copied in accordance with the terms of such license.
Adobe, Adobe Premiere, Adobe Photoshop, Adobe Illustrator, Adobe Type 
Manager, ATM and PostScript are trademarks of Adobe Systems Incorporated 
that may be registered in certain jurisdictions. Macintosh and Apple are 
registered trademarks, and Mac OS is a trademark of Apple Computer, Inc. 
Microsoft, Windows are registered trademarks of Microsoft Corporation. All 
other products or name brands are trademarks of their respective holders.

Most of the material for this document was derived from earlier works by 
Thomas Knoll, Mark Hamburg and Zalman Stern. Additional contributions came 
from David Corboy, Kevin Johnston, Sean Parent and Seetha Naray-anan. It 
was then compiled and edited by Dave Wise and Paul Ferguson.

Version History

7 November 1994 	David J. Wise 		First draft
15 January 1995 	David J. Wise 		First release
8 February 1995 	Seetharaman Narayanan 	MS-Windows modifications
16 July 1995 		Paul D. Ferguson 	Reformatted and updated 
						for Photoshop 3.0.4



Chapter 10

Document File Formats

Adobe Photoshop saves a user's document in one of several formats, which 
are listed under the pop-up menu in the �Save� dialog. This chapter 
doccuments these standard formats.

The formats discussed in this chapter include Photoshop 3.0 native format, 
Photoshop EPS format, Filmstrip format, and TIFF format.

For more information about file formats, you may wish to consult the 
Encyclopedia of Graphics File Formats by James D. Murray & William vanRyper 
(1994, O'Reilly & Associates, Inc., Sebastopol, CA ISBN 1-56592-058-9).


Image resource blocks

Image resource blocks are the basic building unit of several file formats, 
including Photoshop's native file format, JPEG, and TIFF. Image resources are 
used to store non-pixel data associated with an image, such as pen tool paths. 
(They are referred to as resource data because they hold data that was stored 
in the Macintosh's resource fork in early versions of Photoshop.)

The basic structure of Image Resource Blocks is shown in table 10-1.


Table 10-1: Image resource block

Type		Name	Description

OSType		Type	Photoshop always uses its signature, '8BIM'
int16 		ID 	Unique identifier (see table 10-2).
PString 	Namel	A pascal string, padded to make size even 
			(a null name consists of two bytes of 0)
int32 		Size 	Actual size of resource data. This does not 
			include the Type, ID, Name, or Size fields.
Variable 	Data	Resource data, padded to make size even

Image resources use several standard ID numbers, as shown in table 10-2. 
Not all file formats use all ID's. Some information may be stored in 
other sections of the file. 


Table 10-2: Image resoure ID's

ID 		Description

0x03E8 (1000) 	Obsolete-Photoshop 2.0 only. Contains five int16 
		values: number of channels, rows, columns, depth, and mode.
0x03E9 (1001) 	Optional. Macintosh print manager print info record.
0x03EB (1003) 	Obsolete-Photoshop 2.0 only. Contains the indexed color table.
0x03ED (1005) 	Resolution information. See appendix A for description 
		of the ResolutionInfo structure.
0x03EE (1006) 	Names of the alpha channels as a series of Pascal strings.
0x03EF (1007) 	Display information for each channel. See appendix A 
		for a description of the DisplayInfo structure.
0x03F0 (1008) 	Optional. The caption as a Pascal string.
0x03F1 (1009) 	Border information. Contains a Fixed number for the 
		border width, and an int16 for border units (1=inches, 
		2=cm, 3=points, 4=picas, 5=columns).
0x03F2 (1010) 	Background color. See the Colors file information in 
		chapter 11.
0x03F3 (1011) 	Print flags. A series of one byte boolean values (see 
		Page Setup dialog): labels, crop marks, color bars, 
		registration marks, negative, flip, interpolate, caption.
0x03F4 (1012) 	Grayscale and multichannel halftoning information.
0x03F5 (1013) 	Color halftoning information.
0x03F6 (1014) 	Duotone halftoning information.
0x03F7 (1015) 	Grayscale and multichannel transfer function.
0x03F8 (1016) 	Color transfer functions.
0x03F9 (1017) 	Duotone transfer functions.
0x03FA (1018) 	Duotone image information.
0x03FB (1019) 	Two bytes for the effective black and white values for 
		the dot range.
0x03FC (1020) 	Obsolete.
0x03FD (1021) 	EPS options.
0x03FE (1022) 	Quick Mask information. 2 bytes containing Quick Mask 
		channel ID, 1 byte boolean indicating whether the mask was 
		initially empty.
0x03FF (1023) 	Obsolete.
0x0400 (1024) 	Layer state information. 2 bytes containing the index of 
		target layer. 0=bottom layer.
0x0401 (1025) 	Working path (not saved). See path resource format later 
		in this chapter.
0x0402 (1026) 	Layers group information. 2 bytes per layer containing a 
		group ID for the dragging groups. Layers in a group 
		have the same group ID.
0x0403 (1027) 	Obsolete.
0x0404 (1028) 	IPTC-NAA record. This contains the File Info... information.
0x0405 (1029) 	Image mode for raw format files.
0x0406 (1030) 	JPEG quality. Private.
0x07D0�0x0BB6 (2000�2998) 	
		Path Information (saved paths)
0x0BB7 (2999) 	Name of clipping path
0x2710 (10000) 	Print flags information. 2 bytes version (= 1), 
		1 byte center crop marks, 1 byte (always zero), 
		4 bytes bleed width value, 2 bytes bleed width scale.


Path resource format

Photoshop stores the paths saved with an image in an image resource block. 
These resource blocks consist of a series of 26 byte path point records, 
and so the resource length should always be a multiple of 26.

Photoshop stores its paths as resources of type '8BIM' with IDs in the range 
2000 through 2999. These numbers should be reserved for Photoshop. The 
name of the resource is the name given to the path when it was saved.

If the file contains a resource of type '8BIM' with an ID of 2999, then 
this resource contains a Pascal-style string containing the name of 
the clipping path to use with this image when saving it as an EPS file.

The path format returned by GetProperty ( ) call is identical to 
what is described below. Refer to the 'Paths To Illustrator' sample 
plug-in code to see how this resource data is constructed.

Path points 
All points used in defining a path are stored in eight bytes as a 
pair of 32-bit components, vertical component first.

The two components are signed, fixed point numbers with 8 bits before the 
binary point and 24 bits after the binary point. Three guard bits 
are reserved in the points to eliminate most concerns over 
arithmetic overflow. Hence, the range for each component is 
0xF0000000 to 0x0FFFFFFF representing a range 
of -16 to 16. The lower bound is included, but not the upper bound.
This limited range is used because the points are expressed relative to the 
image size. The vertical component is given with respect to the image height, 
and the horizontal component is given with respect to the image width. <0,0> 
represents the top-left corner of the image; <1,1> (<0x01000000,0x01000000>) 
represents the bottom-right.

On Intel processors (Windows), the byte order of the path point 
components are reversed; you should swap the bytes when accessing 
each 32-bit value.

Path records 
The data in a path resource consists of one or more 26 byte 
records. The first two bytes of each record is a selector to 
indicate what kind of path data record it is. Under Windows, you 
should swap the bytes before accessing it as a short (int16).


Table 10-3: Path data record types

Selector	 Description

0 		Closed subpath length record
1 		Closed subpath Bezier knot, linked
2 		Closed subpath Bezier knot, unlinked
3 		Open subpath length record
4 		Open subpath Bezier knot, linked
5 		Open subpath Bezier knot, unlinked
6 		Path fill rule record
7 		Clipboard record

The first 26 byte path record contains a selector value of 6 
(path fill rule record), the remaining 24 bytes of the first 
record are all zeroes which indicates that paths use even/odd rule. 
Subpath length records (selector value 0 or 3) contain the number of 
Bezier knot records in bytes 2 and 3. The remaining 22 bytes are unused, 
and should be zeroes. Each length record is then immediately followed by 
the Bezier knot records describing the knots of the subpath.

In Bezier knot records, the 24 bytes following the selector field 
contain three path points (described above) for:

(1) the control point for the Bezier segment preceding the knot,
(2) the anchor point for the knot, and
(3) the control point for the Bezier segment leaving the knot.

Linked knots have their control points linked; editing one point 
edits the other one to preserve collinearity. Knots should only 
be marked as having linked controls if their control points are 
collinear with their anchor. The control points on unlinked knots 
are independent of each other. Refer to the Adobe Photoshop 
User Guide for more information.

Clipboard records, selector = 7, contain four Fixed point numbers for the 
bounding rectangle (top, left, bottom, right), and a single Fixed 
point number indicating the resolution.


Photoshop 3.0 files

Macintosh file type: '8BPS' 
Windows file extension:.PSD

This is the native file format for Adobe Photoshop 3.0. 

It supports storing all layer information.

Photoshop 3.0 files under Windows 
All data is stored in big endian byte order; under Windows you 
must byte swap short and long integers when reading or writing.

Photoshop 3.0 files under Mac OS 
For cross-platform compatibility, all information needed by 
Adobe Photoshop 3.0 is stored in the data fork. For 
interoperability with other Macintosh applications, however, 
some information is duplicated in resources stored in the resource fork 
of the file.

For compatibility with Adobe Fetch, a 'pnot' 0 resource contains references 
to thumbnail, keywords, and caption information stored in other 
resources. The thumbnail picture is stored in a 'PICT' resource, 
the keywords are stored in a 'STR#' 128 resource and the caption text 
is stored in a 'TEXT' 128 resource. For more information on the format 
of these resources see Inside Macintosh: QuickTime Components and the 
Adobe Fetch Awareness Developer's Toolkit.

All of the data from Photoshop's File Info dialog is stored in 
an 'ANPA' 10000 resource. The data in this resource is stored as 
an IPTC-NAA record 2 and should be readable by various tools from 
Iron Mike. For more information on the format of this resource contact:

IPTC-NAA Digital Newsphoto Parameter Record 
Newspaper Association of America 
The Newspaper Center 
11600 Sunrise Valley Drive 
Reston VA 20091

Photoshop also creates 'icl8' -16455 and 'ICN#' -16455 resources 
containing thumbnail images which will be shown in the Finder.


Photoshop 3.0 file format

The file format for Photoshop 3.0 is divided into five major parts.

-----------------------------
File Header

-----------------------------
Color Mode Data

-----------------------------
Image Resources

-----------------------------
Layer and Mask Information

-----------------------------
Image Data

-----------------------------

The file header is fixed length, the other four sections are variable 
in length.

When writing one of these sections, you should write all fields in 
the section, as Photoshop may try to read the entire section. 
Whenever writing a file and skipping bytes, you should explicitly write 
zeros for the skipped fields.

When reading one of the length delimited sections, use the 
length field to decide when you should stop reading. In most cases, 
the length field indicates the number of bytes, not records following.

File header section 
The file header contains the basic properties of the image.


Table 10-4: File header

Length 		Name 		Description

4 bytes 	Signature 	Always equal to '8BPS'. Do not try to 
				read the file if the signature does not 
				match this value.
2 bytes 	Version 	Always equal to 1. Do not try to 
				read the file if the version does 
				not match this value.
6 bytes 	Reserved 	Must be zero.
2 bytes 	Channels 	The number of channels in the image, 
				including any alpha channels. Supported 
				range is 1 to 24.
4 bytes 	Rows 		The height of the image in pixels. 
				Supported range is 1 to 30,000.
4 bytes 	Columns 	The width of the image in pixels. 
				Supported range is 1 to 30,000.
2 bytes		Depth 		The number of bits per channel. 
				Supported values are 1, 8, and 16.
2 bytes 	Mode 		The color mode of the file.
				Supported values are:
			
				Bitmap = 0 
				Grayscale = 1 
				Indexed Color = 2 
				RGB Color = 3 
				CMYK Color = 4 
				Multichannel = 7 
				Duotone = 8 
				Lab Color = 9
			
Color mode data section 
Only indexed color and duotone have color mode data. For all other 
modes, this section is just 4 bytes: the length field, which is set to zero.

For indexed color images, the length will be equal to 768, and the 
color data will contain the color table for the image, in non-interleaved 
order.

For duotone images, the color data will contain the duotone specification, 
the format of which is not documented. Other applications that read 
Photoshop files can treat a duotone image as a grayscale image, 
and just preserve the contents of the duotone information when reading 
and writing the file.


Table 10-5: Color mode data

Length 		Name 		Description

4 bytes 	Length 		The length of the following color data.
Variable 	Color data 	The color data.

Image resources section 
The third section of the file contains image resources. As with 
the color mode data, the section is indicated by a length field 
followed by the data. The image resources in this data area are 
described in detail earlier in this chapter.


Table 10-6: Image resources

Length 		Name 		Description

4 bytes 	Length 		Length of image resource section.
Variable 	Resources 	Image resources.

Layer and mask information section 
The fourth section contains information about Photoshop 3.0 layers 
and masks. The formats of these records are discussed later in this 
chapter. If there are no layers or masks, this 
section is just 4 bytes: the length field, which is set to zero.


Table 10-7: Layer and mask information

Length 		Name 		Description

4 bytes 	Length 		Length of the miscellaneous information 
				section.
Variable 	Layers 		Layer info. See table 10-10.
Variable 	Masks 		One or more layer mask info structures. 
				See table 10-13.

Image data section 
The image pixel data is the last section of a Photoshop 
3.0 file. Image data is stored in planar order, first all the red 
data, then all the green data, etc. Each plane is stored in 
scanline order, with no pad bytes.  

If the compression code is 0, the image data is just the raw image data.

If the compression code is 1, the image data starts with the byte counts 
for all the scan lines (rows * channels), with each count stored 
as a two-byte value. The RLE compressed data follows, with each 
scan line compressed separately. The RLE compression is the same 
compression algorithm used by the Macintosh ROM routine PackBits, 
and the TIFF standard.


Table 10-8: Image data 

Length 		Name 		Description

2 bytes 	Compression 	Compression method.
				Raw data = 0, RLE compressed = 1.
Variable 	Data 		The image data.



Layer and mask records

Information about each layer and mask in a document is stored in the fourth 
section of the file. The complete, merged image data is not stored here; it 
resides in the last section of the file.

The first part of this section of the file contains layer information, 
which is divided into layer structures and layer pixel data, as shown 
in table 10-9. The second part of this section contains layer mask 
data, which is described in table 10-16.


Table 10-9: Layer info section

Length 		Name 		Description

4 bytes 	Length 		Length of the layers info section, rounded 
				up to a multiple of 2.
Variable 	Layers structure Data about each layer in the document. 
				See table 10-10.
Variable 	Pixel data 	Channel image data for each channel in 
				the order listed in the layers structure 
				section. See table 10-15.

Table 10-10: Layer structure

Length 		Name 		Description

2 bytes 	Count 		Number of layers. If <0, then number of 
				layers is absolute value, and the first 
				alpha channel contains the transparency 
				data for the merged result.
Variable 	Layer 		Information about each layer (table 10-11).


Table 10-11: Layer records

Length 		Name 		Description

4 bytes 	Layer top 	The rectangle containing the contents 
				of the layer. 
4 bytes 	Layer left 
4 bytes 	Layer bottom
4 bytes 	Layer right
2 bytes 	Number channels The number of channels in the layer.
Variable 	Channel length info 
				Channel information. This contains 
				a six byte record for each channel. 
				See table 10-12.
4 bytes 	Blend mode signature 
				Always '8BIM'.

4 bytes 	Blend mode key 	'norm' = normal 
				'dark' = darken 
				'lite' = lighten 
				'hue ' = hue 
				'sat ' = saturation 
				'colr' = color 
				'lum ' = luminosity 
				'mul ' = multiply 
				'scrn' = screen 
				'diss' = dissolve 
				'over' = overlay 
				'hLit' = hard light 
				'sLit' = soft light 
				'diff' = difference
1 byte 		Opacity 	0 = transparent ... 255 = opaque
1 byte 		Clipping 	0 = base, 1 = non-base
1 byte 		Flags 		bit0: transparency protected
				bit1: visible
1 byte 		(filler) 	(zero)
4 bytes 	Extra data size Length of the extra data field. This is 
				the total length of the next five fields.
24 bytes, or 4 bytes if no layer mask.
		Layer mask data	See table 10-13.
Variable 	Layer blending ranges i
				See table 10-14.
Variable 	Layer name 	Pascal string, padded to a multiple of 4 bytes.


Table 10-12: Channel length info

Length 		Name 		Description

2 bytes 	Channel ID 	0 = red, 1 = green, etc. 
				-1 = transparency mask 
				-2 = user supplied layer mask
4 bytes 	Length 		Length of following channel data.


Table 10-13: Layer mask data

Length 		Name 		Description

4 bytes 	Size 		Size of layer mask data. This will be 
				either 0x14, or zero (in which case the 
				following fields are not present).
4 bytes 	Top 		Rectangle enclosing layer mask.
4 bytes 	Left
4 bytes 	Bottom
4 bytes 	Right 
1 byte 		Default color 	0 or 255
1 byte 		Flags 		bit 0: position relative to layer
				bit 1: layer mask disabled
				bit 2: invert layer mask when blending
2 bytes 	Padding 	Zeros


Table 10-14: Layer blending ranges data

Length 		Name 		Description

4 bytes 	Length 		Length of layer blending ranges data
4 bytes 	Composite gray blend source 
				Contains 2 black values followed by 2 
				white values.
				Present but irrelevant for Lab & Grayscale.
4 bytes 	Composite gray blend destination 
				Destination Range
4 bytes 	First channel source range
4 bytes 	First channel destination range
4 bytes 	Second channel source range
4 bytes 	Second channel destination range
... ... ...
4 bytes 	Nth channel source range
4 bytes 	Nth channel destination range


Table 10-15: Channel image data

Length 		Name 		Description

2 bytes 	Compression 	0 = Raw Data, 1 = RLE compressed.
Variable 	Image data 	If the compression code is 0, the image data 
				is just the raw image data calculated as 
				((Layer Bottom - Layer Top) * 
				(Layer Right - Layer Left)). If the 
				compression code is 1, the image data 
				starts with the byte counts for all the 
				scan lines in the channel (Layer Bottom - 
				Layer Top), with each count stored as a 
				two-byte value. The RLE compressed data 
				follows, with each scan line compressed 
				separately. The RLE compression is the 
				same compression algorithm used by the 
				Macintosh ROM routine PackBits, and the 
				TIFF standard.  

				If the data since the Layers Size is odd, 
				a pad byte will be inserted.


Table 10-16: Layer mask data

Length 		Name 		Description

2 bytes 	Overlay color space
8 bytes 	Color components 
				4 * 2 byte color components
2 bytes 	Opacity 	0 = transparent, 100 = opaque.
1 byte 		Kind 		0 = Color selected--i.e. inverted
				1 = Color protected
				128 = use value stored per layer. This value 
				is preferred. The others are for backward 
				compatibility with beta versions.
1 byte 		(filler) 	(zero)



Photoshop EPS files

Photoshop 3.0 writes a high-resolution bounding box comment to the EPS file 
immediately following the traditional EPS bounding box comment. The 
comment begins with '%%HiResBoundingBox' and is followed by four numbers 
identical to those given for the bounding box except that they can have 
fractional components (i.e., a decimal point and digits after it). 
The traditional bounding box is written as the rounded version of 
the high resolution bounding box for compatibility.

Photoshop writes its image resources out to a block of data stored 
as follows:

%BeginPhotoshop: <length> <hex data>

<length> is the length of the image resource data.

<hex data> is the image resource data in hexadecimal.

Photoshop includes a comment in the EPS files it writes so that it is 
able to read them back in again. Third party programs that write
pixel-based EPS files may want to include this comment in their 
EPS files, so Photoshop can read their files.

The comment must follow immediately after the %% comment block at the start 
of the file. The comment is:

%ImageData: <columns> <rows> <depth> <mode> <pad channels> <block size> 
<binary/hex> "<data start>"

<columns> is the width of the image in pixels.

<rows> is the height of the image in pixels.

<depth> is the number of bits per channel. Must be 1 or 8.

<mode> is the image mode. 1 for bitmap and gray scale images (determined by 
depth), 2 for Lab images, 3 for RGB images, and 4 for CMYK images.

<pad channels> is the number of other channels stored in the file, which are 
ignored when reading. (Photoshop uses this to include a gray scale image that 
is printed on non�-olor PostScript printers).

<block size> is the number of bytes per row per channel. This will be 
equal to (<columns> * <depth> + 7) / 8 if the data is stored in 
line-interleave format (or if there is only one channel), or equal to 
1 of the data is interleaved.  

<binary/hex> is 1 if the data is in binary format, and 2 if the data 
is in hex format.  

<data start> contains the entire PostScript line immediately preceding the 
image data. (This entire line should not occur elsewhere in the PostScript 
header code, but it may occur at part of a line.)


Filmstrip files

Adobe Premiere 2.0 supports the filmstrip file format. Premiere users can 
export any video clip as a filmstrip. Refer to the Adobe Premiere User 
Guide for more information.

Adobe Photoshop 3.0 supports the filmstrip file type to allow each frame 
to be individually painted. The filmstrip file format is fairly simple, 
and is described in this section.

A filmstrip consists of a sequence of equal sized 32�bit images, known as 
frames. The channel order in the file is Red, Green, Blue, Alpha.

After each frame is an arbitrarily sized leader area, in which any type of 
information may be embedded. Adobe Premiere puts the timecode and frame 
number for the frame in this area. This area is ignored by Premiere 
when the file is read.

Following all the frames is a 16 row trailer frame (it has the same width 
as the other frames). Adobe Premiere writes a yellow and black diagonal 
pattern in this area. The lower right corner of this area is 
actually an information record that exists at the very end of 
the file. This record is located by seeking to the end 
of the file minus the size of the record, then reading the record 
and verifying the signature field that it contains.

// Definition for filmstrip info record

typedef struct {
long signature; // 'Rand'
long numFrames; // number of frames in file
short packing; // packing method
short reserved; // reserved, should be 0
short width; // image width
short height; // image height
short leading; // horiz gap between frames
short framesPerSec;// frame rate
char spare[16]; // some spare data.
} FilmStripRec, **FilmStripHand;


Table 10-17: FilmStripRec structure

Type 		Field 		Description

long 		signature 	This field must be set to the code 'Rand' 
				and is used to verify the validity of the 
				record.
long 		numFrames 	This is the total number of frames in the file.
short 		packing 	This is the packing method used, currently 
				only a value of 0 is defined, for no packing.
short 		width 		The width of each image, in pixels.
short 		height 		The height of each image, in pixels.
short 		leading 	The height of the leading areas, in pixels.
short 		framesPerSec 	The rate at which the frames should be played.

To locate the filmstrip info record, seek to the end of the file minus 
(sizeof(FilmStripRec)), then read in the FilmStrip record. Check the signature 
field for the code 'Rand' to test for validity.

To locate the data for a particular frame, seek to (frame * width * 
(height+leading) * 4), then read (width * height * 4) bytes. 
If the data is being placed into a GWorld (Mac OS), the channels must 
be rearranged from Red-Green-Blue-Alpha to Alpha-Red-Green-Blue.

To write a FilmStrip file, write each frame sequentially into the file, 
including the leading areas. Then write a block of ((width * 
(height+leading) * 4) - sizeof(FilmStripRec)) bytes. Finally, fill in 
and write the FilmStrip record to the file.

Note: The packing field should currently be zero. In the future 
packing methods may be defined for filmstrips, so any software which 
reads filmstrips should examine this field before opening the file.


TIFF files

The same image resources information found in Photoshop 3.0 files are stored 
in TIFF files under tag number 34377 (see Image Resource Blocks and Image 
Resources earlier in this chapter).

For TIFF files the caption data is stored in an image description tag 
270 and all the information is stored as an IPTC�NAA record 2 in tag 
33723. The tag number was chosen by inspecting files written by 
Iron Mike software, and is supposed to be defined in a Rich TIFF 
specification. The tag is also specified in:

NSK TIFF 
The Japan Newspaper Publishers & Editors Association 
Nippon Press Center 
Building 2-2-1 Uchlsaiwai-cho 
Chiyoda-ku, Tokyo 100

For more information about the TIFF format see:

TIFF Revision 6.0 
(206) 628-5693

In reading the files, the following order is used with information read 
lower on the list replacing information read higher.

Image Description Tag (TIFF only) 
IPTC-NAA Tag (TIFF only)

It is a bug that the TIFF information comes prior to the image resource 
information on this list. This means that an edit to the TIFF info 
will not be recognized unless the image resource information is removed. 
The TIFF data may be moved to after the image resource information 
in a future version of Photoshop.

Table 10-16 describes the standard TIFF tags and tag values that 
Photoshop 3.0 is able to read and write.

TIFF files under Mac OS 
For cross-platform compatibility, all TIFF information is stored in 
the data fork. For interoperability with other Macintosh applications, 
however, some information is duplicated in resources stored in the 
resource fork of the file.

For compatibility with Adobe Fetch, a 'pnot' 0 resource contains references to 
thumbnail, keywords, and caption information stored in other resources. The 
thumbnail picture is stored in a 'PICT' resource, the keywords are stored 
in a 'STR#' 128 resource and the caption text is stored in a 'TEXT' 
128 resource. For more information on the format of these resources 
see Inside Macintosh: QuickTime Components and the Adobe Fetch Awareness 
Developer's Toolkit.  

All of the data from Photoshop's File Info dialog is stored in an 
'ANPA' 10000 resource. The TIFF file also contains a 'STR ' -16396 resource 
that contains the string 'Adobe Photoshop' 3.0' which indicates the 
application that created the TIFF file.

Photoshop also creates 'icl8' -16455 and 'ICN#' -16455 resources containing 
thumbnail images which will be shown in the Finder.


10-18: TIFF Tags

Tag 		Photoshop reads 		Photoshop writes

IFD 		First IFD in file 		Only one IFD per file
NewSubFileType 	Ignored 			0
ImageWidth 	1 to 30000 			1 to 30000
ImageLength 	1 to 30000 			1 to 30000
BitsPerSample 	1, 2, 4, 8, 16 (all same) 	1, 8, 16
Compression 	1, 2, 5, 32773 			1, 5
PhotometricInterpretation 
		0, 1, 2, 3, 5, 8 0 		(1-bit), 1 (8-bit), 2, 3,5,8
FillOrder 	1 				No
ImageDescription Printing Caption 		Printing Caption
StripOffsets 	Yes 				Yes
SamplesPerPixel 1 to 24 			1 to 24
RowsPerStrip 	Any 				Single strip if not compressed, 						multiple strips if compressed.
StripByteCounts Required if compressed 		Yes
XResolution 	Yes 				Yes
YResolution 	Ignored (square pixels assumed)	Yes
PlanarConfiguration 1 or 2 			1
ResolutionUnit 	2 or 3 				2
Predictor 	1 or 2 				1 or 2
ColorMap 	Yes 				Yes
TileWidth 	Yes 				No
TileLength 	Yes 				No
TileOffsets 	Yes 				No
TileByteCounts 	Required if compressed 		No
InkSet 		1 				No
DotRange 	Yes, if CMYK 			Yes
ExtraSamples 	Ignored (except for count) 	0