admin管理员组

文章数量:1530517

2023年12月21日发(作者:)

PSD文件解析

(lzgame整理)

一、 PSD文件结构为:

文件头信息

颜色映射表

图像资源

图层与蒙版信息

图像数据

二、 PSD文件头信息结构

typedef struct tagPSD_FILE_HEADER

{

DWORD signature;

WORD version;

WORD reserved1;

WORD reserved2;

WORD reserved3;

WORD number_of_channels;

DWORD height_of_image;

DWORD width_of_image;

WORD depth;

WORD color_mode;

} psd_file_header;

字 段 名

signature

version

reserved1-3

number_of_channels

height_of_image

width_of_image

depth

color_mode

类型

char

short

short

int

int

short

short

大小

描 述

(字节)

4 签名:总是为'8BPS'

版本: 总是为 1 (**PSB** 版本为 2)

2

保留: 必须为 0

6

图片通道数量,包含所有颜色通道数和2

alpha通道数。支持范围为 1 - 56

图片高度像素数,支持范围为 1 - 30,000.

4

(**PSB** 最大为 300,000.)

图片宽度像素数,支持范围为 1 - 30,000.

4

(*PSB** 最大为 300,000)

2 每像素字节数: 支持的值为 1, 8, 16.

颜色模式. 支持的值有: Bitmap = 0;

2 Grayscale = 1; Indexed = 2; RGB = 3; CMYK = 4;

Multichannel = 7; Duotone = 8; Lab = 9.

三、 PSD颜色映射表,在photoshop中仅有索引色模式和双色调模式有颜色映射表,数据格式如下:

1. 4字节(int):颜色映射表三色总颜色数

2. 颜色映射表数据区:颜色映射表中保存的颜色数量为“三色总颜色数/3”,在颜色映射表中每个颜色的RGB三色被分开保存,每个颜色值2字节,依次为R通道数据区、G通道数据区、B通道数据区。可以计算得到总数据长度为“颜色映射表三色总颜色数 * 2字节”

四、 PSD图像资源,起始为4字节的图像资源数量(int),然后为图像资源数据区,图像资源的数据结构为:

typedef struct tagPSD_IMAGE_RESOURCE {

DWORD signature;

WORD UniqueID;

BYTE nNameSize;

BYTE* name;

DWORD nResourceSize;

BYTE* data;

} psd_ image_resource;

字 段 名

signature

UniqueID

nLength

name

nSize

Data

类型

Int

Short

Byte

Char

Int

Byte

大小

(字节)

4

2

1

nLength

4

nSize

描 述

签名,总是为'8BIM'

资源唯一索引号

名称字符串长度

名称,Pascal字符串,长度如果为奇数,在字符串末尾追加1个字节“0”

实际资源数据字节数

实际图像资源数据,长度如果为奇数,在图像资源数据末尾追加1个字节“0”

已知资源ID介绍:

1. ID 1005:图像分辨率,共16字节

1) 4字节(int):水平分辨率(像素/英寸)

2) 2字节(short):画布显示的水平分辨率单位,1:像素/英寸,2:厘米/英寸

3) 2字节(short):画布显示的宽度单位, 1:英寸,2:厘米,3:点,4:派卡,5:列

4) 4字节(int):垂直分辨率(像素/英寸)

5) 2字节(short):画布显示的垂直分辨率单位,1:像素/英寸,2:厘米/英寸

6) 2字节(short):画布显示的高度单位, 1:英寸,2:厘米,3:点,4:派卡,5:列

2. ID 1006:Alpha通道的名称列表,以Pascal字符串存储,即通道名称字符串长度(1字节)+ 通道名称(最大255字节)。可以通过计算名称数量获得总alpha通道数。

3. ID 1007:颜色通道信息

1) 10字节:颜色通道对应的颜色值:

2) 2字节(short):颜色值使用的颜色空间类型,颜色空间表示了PhotoShop把不同颜色模式转换为屏幕RGB显示模式的取值方式。

颜色空间类型定义为:

typedef enum {

psd_color_space_dummy = -1, // 没有颜色空间

psd_color_space_rgb, // RGB颜色空间

psd_color_space_hsb, // HSB颜色空间

psd_color_space_cmyk, // CMYK颜色空间

psd_color_space_pantone, // 潘通颜色空间

psd_color_space_focoltone, // FOCOLTONE颜色空间

psd_color_space_trumatch, // TRUMATCH颜色空间

psd_color_space_toyo, // TOYO ColorFinder颜色

psd_color_space_lab, // LAB颜色空间

psd_color_space_gray, // 灰度颜色空间

psd_color_space_wide_cmyk, // 宽CMYK颜色空间

psd_color_space_hks, // HKS颜色空间

psd_color_space_dic, // DIC颜色空间

psd_color_space_total_ink, // 总墨量颜色空间

psd_color_space_monitor_rgb, // 显示器RGB颜色空间

psd_color_space_duotone, // 双色调颜色空间

psd_color_space_opacity // 不透明颜色空间

} psd_color_space;

3) 4x2字节(short):颜色值

4) 2字节(short):不透明度,取值范围为0-100

5) 1字节(byte):显示方式,0:选中, 1:保护

6) 1字节:可能是用于多通道颜色模式,通常为0

4. ID 1008:标题,以Pascal字符串存储,即标题长度(1字节)+标题(最大255字节)

5. ID 1024:当前图层ID号(2字节),为0 表示最后一层

6. ID 1026:图层组信息,每个图层组ID占用2个字节,可通过计算该资源的数据长度/2得到图层组总数量

7. ID 1033:缩略图资源结构,同ID 1036;(Photoshop 4.0)

8. ID 1036:缩略图资源结构,缩略图信息由28字节的头信息+JFIF格式的RGB图像数据组成。(Photoshop

5.0 以上)

1) 4字节(int):缩略图格式,1为kJpegRGB,也支持kRawRGB(0).

2) 4字节(int):缩略图宽度像素数

3) 4字节(int):缩略图高度像素数

4) 4字节(int):每行字节数 = (宽度像素数 * 每像素字节数 + 31) / 32 * 4.

5) 4字节(int):总字节数 = 每行字节数 * 高度 * 面板数量

6) 4字节(int):每行后面不用的字节,用于一致性检查

7) 2字节(short):每像素字节数,总是为24

8) 2字节(short):面板数量,总是为1

9) 剩余字节:JFIF图像数据

9. ID 1034: Copyright 标记(2字节)。Photoshop (v4.0以上)

10. ID 1037:全局光照角度(4字节(int)),范围为0-359,用于图层效果,默认为30。(Photoshop 5.0以上)

11. ID 1042:显示图层效果标记(1字节),全局标记,用于显示或隐藏所有的图层效果。(Photoshop 5.0以上)

12. ID 1045: Alpha通道的Unicode名称列表(Unicode字符串,每个字符由2个字节组成),存储格式为:通道Unicode名称字符串长度(4字节)+ 通道Unicode名称(字符串长度 * 2字节)。可以通过计算名称数量获得总alpha通道数。(Photoshop 5.0以上)

13. ID 1046:索引颜色表颜色数量(2字节)。(Photoshop 6.0以上)

14. ID 1047:索引颜色表中透明色的索引号(2字节)。(Photoshop 6.0以上)

15. ID 1049:全局光源高度(Global Altitude)(4字节)。(Photoshop 6.0以上)

16. ID 1053: Alpha 通道ID号列表(4字节/ID号),可以通过计算ID号数量获得总alpha通道数。(Photoshop 6.0以上)

17. ID 1057:(Photoshop 6.0) 版本信息

1) 4字节(int):版本号

2) 1字节(bool):有真实的图像混合数据标记

3) 4字节(int):作者名称Unincode字符串长度

4) 2字节(wchar) * 作者名称字符串长度:作者名称

5) 4字节(int):读者名称Unincode字符串长度

6) 2字节(wchar) * 读者名称字符串长度:读者名称

7) 4字节(int):当前文件版本

18. ID 2000-2998:Photoshop路径资源,ID范围为2000-2998。

路径资源数据由26字节的资源块组成,总长度为26 x 路径资源数量

起始的2字节(short)为路径资源类型,余下24字节根据类型,注释如下:

1) 类型0:关闭的路径;

类型3:打开的路径;

a) 2字节(short):路径中的贝塞尔节点数量

b) 22字节:总是为0

2) 类型1:关闭的贝塞尔节点, 连接;

类型2:关闭的贝塞尔节点, 未连接;

类型4:打开的贝塞尔节点, 连接;

类型5:打开的贝塞尔节点, 未连接;

a) 4字节(int):节点前控制点Y坐标

b) 4字节(int):节点前控制点X坐标

c) 4字节(int):节点Y坐标

d) 4字节(int):节点X坐标

e) 4字节(int):节点后控制点Y坐标

f) 4字节(int):节点后控制点X坐标

3) 类型6:路径填充规则24字节

4) 类型7:路径剪切范围

a) 4字节(int):路径剪切范围Top

b) 4字节(int):路径剪切范围Left

c) 4字节(int):路径剪切范围Bottom

d) 4字节(int):路径剪切范围Right

e) 4字节(int):路径剪切范围分辨率

f) 4字节(int):总是为0

5) 类型8:路径填充

a) 2字节(short):填充的值

b) 22字节:总是为0

19. ID 2999:EPS文件剪切路径(暂无资料)

以下为脱离了Photoshop可能就没用的图像资源:

20. ID 1009:打印边框(边界)信息

1) (2字节实际数据, 2字节分数):打印边框宽度,固定值

2) 2字节(short):打印边框单位,1为英寸, 2为厘米, 3为点, 4为派卡, 5为列

21. ID 1011:打印设置标记

1) 1字节(bool):打印标签标记

2) 1字节(bool):打印角裁剪标记

3) 1字节(bool):打印颜色条标记

4) 1字节(bool):打印套准标记

5) 1字节(bool):负片打印标记

6) 1字节(bool):药膜向下标记

7) 1字节(bool):插入说明标记

8) 1字节(bool):打印标题标记

9) 1字节(bool):打印出血标记

22. ID 1032:网格线信息(Photoshop 4.0以上)

1) 4字节(int):版本号,总是为1

2) 4字节(int):水平方向网格线数量

3) 4字节(int):垂直方向网格线数量

4) 4字节(int):网格线总数(可以为0)

以下5字节/组 * 网格线总数

5) 4字节(int):网格线坐标列表

6) 1字节(byte):网格线类型,0为垂直网格线,1为水平网格线

23. ID 1038:颜色样板资源(Photoshop 5.0以上)

1) 4字节(int):版本号,总是为1

2) 4字节(int):颜色样板数量

以下10字节/组 * 颜色样板数量

3) 4字节(int):颜色垂直位置

4) 4字节(int):颜色水平位置

5) 2字节(short):颜色空间类型

24. ID 1050:切片资源(Photoshop 6.0以上)

1) 4字节(int):版本号,总是为6

2) 4字节(int):切片范围top

3) 4字节(int):切片范围left

4) 4字节(int):切片范围bottom

5) 4字节(int):切片范围right

6) 4字节(int) + 字符串长度*2:切片资源名称Unicode字符串长度 + 切片资源名称

7) 4字节(int):切片数量

8) 各个切片的详细信息

a) 4字节(int):切片ID

b) 4字节(int):切片组ID,为0表示不是用户切片

c) 4字节(int):关联图层数量

d) 0或4字节(int):关联图层id(仅当关联图层数量为1时存在)

e) 4字节(int) + 字符串长度*2:切片名称Unicode字符串长度 + 切片名称

f) 4字节(int):切片类型

g) 4字节(int):切片范围left

h) 4字节(int):切片范围top

i) 4字节(int):切片范围right

j) 4字节(int):切片范围bottom

k) 4字节(int) + 字符串长度*2:HTML链接地址(URL)Unicode字符串长度 + HTML链接地址(URL)

l) 4字节(int) + 字符串长度*2:HTML目标(Target)Unicode字符串长度 + HTML目标(Target)

m) 4字节(int) + 字符串长度*2:HTML图片信息文本Unicode字符串长度 +HTML图片信息文本

n) 4字节(int) + 字符串长度*2:HTML Alt标记Unicode字符串长度 + HTML Alt标记

o) 1字节(byte):在单元格中显示文本的标记

p) 4字节(int) + 字符串长度*2:在单元格中显示的文本Unicode字符串长度 + 在单元格中显示的文本

q) 4字节(int):水平对齐位置

r) 4字节(int):垂直对齐位置

s) 4 * 1字节(byte):读取ARGB背景颜色,依次为A-R-G-B颜色值

25. ID 1054:URL列表(Photoshop 6.0以上)

1) 4字节(int):URL列表数量

2) 各个URL的详细信息

a) 4字节(int):4字节简略关联标签,如:来自切片为“slic”

b) 4字节(int):关联ID

c) 4字节(int) + 字符串长度*2:链接地址(URL) Unicode字符串长度 + 链接地址(URL)

26. ID 1058 ,ID 1059:EXIF数据,不包含固定格式的EXIF头信息(Photoshop 7.0以上)

27. ID 1062:打印缩放信息(Photoshop 7.0以上)

1) 2字节(short):打印缩放类型,0为图像居中,1为缩放以适合介质,2为用户自定义

2) 4字节(float):X坐标位置

3) 4字节(float):Y坐标位置

4) 4字节(float):打印缩放比例

28. ID 1064:像素高宽比(Photoshop CS以上)

1) 4字节(int):版本号,总是为1

2) 8字节(double):像素高宽比,像素点的X/Y值

29. ID 10000:打印出血信息

1) 2字节(short):版本号,总是为1

2) 1字节(bool):打印中心裁剪标记

3) 1字节(bool):预留,总是为0

4) 4字节(int):读取打印出血宽度

5) 2字节(short):打印出血缩放比例

五、 PSD图层与蒙版信息,数据格式如下:

1. 4字节(int):图层和蒙版信息数据总长度(PSB为8字节)

2. 4字节(int):图层信息数据长度(PSB为8字节),长度必须为偶数,否则追加1个字节“0”

以下为图层信息部分:

3. 2字节(short):图层数量

4. 各图层信息数据列表,包括图层的头信息、蒙版信息、效果图层信息及设置信息,其数据格式如下:

1) 4字节(int):图层范围top

2) 4字节(int):图层范围left

3) 4字节(int):图层范围bottom

4) 4字节(int):图层范围right

5) 2字节(short):图层通道数量

6) 各个图层通道的头信息,数据格式如下:

a) 2字节(short):图层通道ID。在RGB图像中:0表示R通道,1表示G通道,2表示B通道;在CMYK图像中:0表示C通道,1表示M通道,2表示Y通道,3表示K通道,等等 ;另外 -1表示透明蒙版,-2表示用户颜色通道。

b) 4字节(int):图层通道数据长度(PSB为8字节)

7) 4字节(char):混合模式签名,总是为'8BIM'

8) 4字节(char):混合模式类型,混合模式类型定义为

typedef enum {

psd_blend_mode_normal, // 'norm' = normal(正常)

psd_blend_mode_dissolve, // 'diss' = dissolve(溶解)

psd_blend_mode_darken, // 'dark' = darken(变暗)

psd_blend_mode_multiply, // 'mul ' = multiply(正片叠底)

psd_blend_mode_color_burn, // 'idiv' = color burn(颜色加深)

psd_blend_mode_linear_burn, // 'lbrn' = linear burn(线性加深)

psd_blend_mode_lighten, // 'lite' = lighten(变亮)

psd_blend_mode_screen, // 'scrn' = screen(滤色)

psd_blend_mode_color_dodge, // 'div ' = color dodge(颜色减淡)

psd_blend_mode_linear_dodge, // 'lddg' = linear dodge(线性减淡(添加))

psd_blend_mode_overlay, // 'over' = overlay(叠加)

psd_blend_mode_soft_light, // 'sLit' = soft light(柔光)

psd_blend_mode_hard_light, // 'hLit' = hard light(强光)

psd_blend_mode_vivid_light, // 'vLit' = vivid light(亮光)

psd_blend_mode_linear_light, // 'lLit' = linear light(线性光)

psd_blend_mode_pin_light, // 'pLit' = pin light(点光)

psd_blend_mode_hard_mix, // 'hMix' = hard mix(实色混合)

psd_blend_mode_difference, // 'diff' = difference(差值)

psd_blend_mode_exclusion, // 'smud' = exclusion(排除)

psd_blend_mode_hue, // 'hue ' = hue(色相)

psd_blend_mode_saturation, // 'sat ' = saturation(饱和度)

psd_blend_mode_color, // 'colr' = color(颜色)

psd_blend_mode_luminosity, // 'lum ' = luminosity(明度)

psd_blend_mode_pass_through, // 'pass' = pass(通过)

} psd_blend_mode;

9) 1字节(byte):不透明度, 0为透明,255为不透明

10) 1字节(byte):剪贴蒙版标记,0 为底板, 1为贴图

11) 1字节(byte):图层设置标记,每一位为一个标记,由右向左依次为:

a) 0位:透明度保护标记

b) 1位:显示图层标记

c) 2位:停用图层标记

d) 3位:像素数据无关标记(Photoshop 5.0以上)

12) 1字节(byte):图层设置保留标记

13) 4字节(int):图层附加效果层数据长度(不知道为什么不设在图层附加效果层数据的前面)

14) 4字节(int):图层蒙版信息数据长度,可能的数值有0、20、36,如果为零,则表示没有数据。

a) 如果数据长度为20,使用前18个字节,依次为:

1. 4字节(int):图层蒙版范围top

2. 4字节(int):图层蒙版范围left

3. 4字节(int):图层蒙版范围bottom

4. 4字节(int):图层蒙版范围right

5. 1字节(byte):蒙版图层的默认颜色(0或255)

6. 1字节(byte):蒙版图层设置标记,每一位为一个标记,由右向左依次为:

1) 0位:相对于图层的位置标记

2) 1位:关闭图层蒙版标记

3) 2位:混合时反转图层蒙版标记

7. 2字节:保留

b) 如果数据长度为36,不使用前18个字节,依次为:

1. 前18个字节:不使用

2. 1字节(byte):蒙版图层设置标记,每一位为一个标记,由右向左依次为:

1) 0位:相对于图层的位置标记

2) 1位:关闭图层蒙版标记

3) 2位:混合时反转图层蒙版标记

3. 1字节(byte):蒙版图层的默认颜色(0或255)

4. 4字节(int):图层蒙版范围top

5. 4字节(int):图层蒙版范围left

6. 4字节(int):图层蒙版范围bottom

7. 4字节(int):图层蒙版范围right

15) 4字节(int):图层混合颜色带信息数据长度,其颜色通道数量 = (数据长度-8字节)/ 8

16) 2字节(short):图层混合颜色带信息中的本图层灰度-黑色

17) 2字节(short):图层混合颜色带信息中的本图层灰度-白色

18) 2字节(short):图层混合颜色带信息中的下一图层灰度-黑色

19) 2字节(short):图层混合颜色带信息中的下一图层灰度-白色

20) 图层混合颜色带各个颜色通道图层混合颜色带信息

a) 2字节(short):图层混合颜色带信息中的本图层灰度-黑色

b) 2字节(short):图层混合颜色带信息中的本图层灰度-白色

c) 2字节(short):图层混合颜色带信息中的下一图层灰度-黑色

d) 2字节(short):图层混合颜色带信息中的下一图层灰度-白色

21) 1字节(byte)+ 图层名称长度:图层名称长度,后面为图层名称(Pascal字符串),图层名称长度必须为4的倍数,如果不足则在末尾补0

22) 各个图层附加效果层数据,数据长度见上面的图层附加效果层数据长度,图层附加效果层数据格式如下:

a) 4字节(char):图层附加效果层标记,总是为“8BIM”

b) 4字节(char):图层附加效果层标签(PSB为8字节)

c) 4字节(int):图层附加效果层数据长度,长度如果为奇数,在数据末尾追加1个字节“0”

d) 图层附加效果层设置信息,不同类型的设置信息的数据长度不同,分别为:

1. 色阶调整图层,标签为:'levl'

1) 2字节(short):版本号,总是为2

2) 10字节 * 29个色阶设置信息,其中第28、29色阶为保留色阶,总是为0

1. 2字节(short):阴影输入色阶(0 - 253)

2. 2字节(short):高光输入色阶(2 - 255)

3. 2字节(short):阴影输出色阶(0 - 255)

4. 2字节(short):高光输出色阶(0 - 255)

5. 2字节(short):中间调输入色阶(10 - 999),该值在图像效果中实际值为 0.1

- 9.99

3) 4字节(char):色阶附加信息签名,总是为 'Lvls'(PhotoShop 8.0以上)

4) 2字节(short):色阶附加信息版本,总是为3

5) 2字节(short):色阶信息总数量,其中附加色阶信息数量为 色阶信息总数量-29

6) 各个颜色通道附加色阶信息,数据格式如下:

1. 2字节(short):阴影输入色阶(0 - 253)

2. 2字节(short):高光输入色阶(2 - 255)

3. 2字节(short):阴影输出色阶(0 - 255)

4. 2字节(short):高光输出色阶(0 - 255)

5. 2字节(short):中间调输入色阶(10 - 999),该值在图像效果中实际值为 0.1

- 9.99

2. 曲线调整图层,标签为:'curv'

1) 1字节(byte):保留

2) 2字节(short):版本号,等于1或4

3) 4字节(int):曲线通道启用标签,标签共32位,如果该位值为1表示该通道曲线调整图层启用,曲线数量即32位中值为1的位数

4) 各通道曲线信息,数据格式如下:

1. 2字节(short):曲线通道中设置点的数量 (2-19)

2. 曲线通道中各设置点的信息,数据格式如下:

a) 2字节(short):曲线通道输出点强度(0-255)

b) 2字节(short):曲线通道输入点强度(0-255)

5) 4字节(char):曲线附加信息签名,总是为 'Crv '(PhotoShop 8.0以上),曲线附加信息事实上与上面基本重复

6) 2字节(short):曲线附加信息版本,总是为4

7) 4字节(int):曲线通道数量

8) 各通道曲线附加信息,数据格式如下:

1. 2字节(short):曲线通道索引号

2. 2字节(short):曲线通道中设置点的数量 (2-19)

3. 曲线通道中各设置点的信息,数据格式如下:

3.

4.

5.

6.

7.

a) 2字节(short):曲线通道输出点强度(0-255)

b) 2字节(short):曲线通道输入点强度(0-255)

亮度/对比度调整图层,标签为:'brit'

1) 2字节(short):亮度

2) 2字节(short):对比度

3) 2字节(short):亮度/对比度平均值

4) 1字节(byte):Lab颜色模式

色彩平衡调整图层,标签为:' blnc '

1) 2字节(short):R或C通道阴影设置信息(-100..100)

2) 2字节(short):G或M通道阴影设置信息(-100..100)

3) 2字节(short):B或Y通道阴影设置信息(-100..100)

4) 2字节(short):R或C通道中间调设置信息(-100..100)

5) 2字节(short):G或M通道中间调设置信息(-100..100)

6) 2字节(short):B或Y通道中间调设置信息(-100..100)

7) 2字节(short):R或C通道高光设置信息(-100..100)

8) 2字节(short):G或M通道高光设置信息(-100..100)

9) 2字节(short):B或Y通道高光设置信息(-100..100)

10) 2字节(short):保持明度标记

色相/饱和度调整图层,标签为:' hue2'

1) 2字节(short):版本号,总是为2

2) 1字节(bool):着色标记

3) 1字节(byte):保留

4) 2字节(short):色相(Photoshop 5.0以上范围为-180,Photoshop 4.0范围为–100)

5) 2字节(short):饱和度(Photoshop 5.0以上范围为0...100,Photoshop 4.0范围为–100)

6) 2字节(short):明度(-100)

7) 2字节(short):主色相

8) 2字节(short):主饱和度

9) 2字节(short):主明度

10) 各颜色通道的色相/饱和度设置,共6个颜色通道,依次为红、黄、绿、青、蓝、洋红,数据结构如下:

1. 2字节(short):颜色范围-左

2. 2字节(short):颜色范围-左中

3. 2字节(short):颜色范围-右

4. 2字节(short):颜色范围-右中

5. 2字节(short):色相

6. 2字节(short):饱和度

7. 2字节(short):明度

可选颜色调整图层,标签为:' selc’

1) 2字节(short):版本号,总是为1

2) 2字节(short):校正方式,0为相对,1为绝对

3) 各颜色通道修正信息,共10个颜色通道,依次为保留通道(总是为0)、红、黄、绿、青、蓝、洋红、白、中性色、黑。数据格式为:

1. 2字节(short):青色修正量

2. 2字节(short):洋红修正量

3. 2字节(short):黄色修正量

4. 2字节(short):黑色修正量

阈值调整图层,标签为:' thrs’

1) 2字节(short):阈值色阶(1...255)

2) 2字节(short):保留

8. 反相调整图层,标签为:' nvrt’,该图层没有要设置的参数

9. 色调分离调整图层,标签为:' post’

1) 2字节(short):色阶(2...255)

2) 2字节(short):保留

10. 通道混合器调整图层,标签为:' mixr’

1) 2字节(short):版本号,总是为1

2) 2字节(short):单色标记

3) 各颜色通道混合参数,共4个通道,通道依次为R、G、B或C、M、Y、K,多余的通道为0。各通道数据格式如下:

1. 2字节(short):R或C颜色混合参数(-200…200)

2. 2字节(short):G或M颜色混合参数(-200…200)

3. 2字节(short):B或Y颜色混合参数(-200…200)

4. 2字节(short):K颜色混合参数(-200…200)

5. 2字节(short):混合常数(-200…200)

11. 渐变映射调整图层,标签为:' grdm’

1) 2字节(short):版本号,总是为1(Photoshop 6.0以上)

2) 1字节(bool):反相标记

3) 1字节(bool):仿色标记

4) 4字节(int):渐变名称长度

5) 2字节 * 渐变名称长度:渐变名称(Unicode字符串)

6) 2字节(short):渐变色标数量

7) 渐变色标信息列表,数据结构如下:

1. 4字节(int):色标位置

2. 4字节(int):色标中点位置

3. 2字节(short):色标颜色空间类型

4. 4 * 2字节(short):颜色空间中的色标颜色值

5. 2字节:保留

8) 2字节(short):不透明度色标数量

9) 不透明度色标信息列表,数据结构如下:

1. 4字节(int):不透明度色标位置

2. 4字节(int):不透明度色标中点位置

3. 2字节(short):不透明度色标不透明度

10) 2字节(short):扩展数据数量,总是为2(Photoshop 6.0以上)

11) 2字节(short):渐变类型,0为实底,1为杂色

12) 2字节(short):渐变模式、

13) 4字节(int):随机数种子

14) 2字节(short):增加透明度标记

15) 2字节(short):限制颜色标记、

16) 4字节(int):粗糙度

17) 2字节(short):颜色模型类型,是一个颜色空间类型值

18) 4 * 2字节(short):颜色模型最小颜色值(ARGB值)

19) 4 * 2字节(short):颜色模型最大颜色值(ARGB值)

20) 2字节:保留

12. 照片滤镜调整图层,标签为:' phfl’

1) 2字节(short):版本号,总是为3

2) 4字节(int):X颜色值(XYZ颜色,前3个字节有效)

3) 4字节(int):Y颜色值(XYZ颜色,前3个字节有效)

4) 4字节(int):Z颜色值(XYZ颜色,前3个字节有效)

5) 4字节(int):浓度(1...100)

6) 1字节(bool):保持明度标记

7) 1字节:保留

13. 效果图层1,标签为:' lrFX’

1) 2字节(short):版本号,总是为 0

2) 2字节(short):效果数量

3) 效果数据列表:

1. 4字节(char):签名,总是为'8BIM'

2. 4字节(char):效果签名

3. 效果列表,根据不同的效果签名分别为

a) 效果图层公共状态,效果签名为'cmnS'

1. 4字节(int):版本号,总是为0

2. 1字节(bool):显示效果图层标记

3. 2字节:保留

b) 投影效果,效果签名为'dsdw'

1. 4字节(int):投影效果图层数据长度,根据不同版本为41字节或51字节

2. 4字节(int):版本号(Photoshop 5.0为0,Photoshop 5.5以上为2)

3. 2字节(short):结构:阴影大小

4. 4字节(int):结构:图层蒙版扩展(0-100)

5. 4字节(int):结构:光源角度

6. 4字节(int):结构:阴影位移距离

7. 2字节:保留

8. 10字节:结构:阴影颜色(2字节颜色空间类型 + 4*2字节颜色值)

9. 4字节(char):混合模式签名,总是为 '8BIM'

10. 4字节(char):结构:混合模式类型(见混合模式类型)

11. 1字节(bool):结构:启用效果标记

12. 1字节(bool):结构:使用全局光标记

13. 1字节(byte):结构:不透明度

14. 10字节(仅版本号为2时):结构:天然颜色(2字节颜色空间类型 +

4*2字节颜色值)

c) 内阴影效果,效果签名为'isdw'

1. 4字节(int):内阴影效果图层数据长度,根据不同版本为41字节或51字节

2. 4字节(int):版本号(Photoshop 5.0为0,Photoshop 5.5以上为2)

3. 2字节(short):结构:阴影大小

4. 4字节(int):结构:图层蒙版缩小(阻塞)(0-100)

5. 4字节(int):结构:光源角度

6. 4字节(int):结构:阴影位移距离

7. 2字节:保留

8. 10字节:结构:阴影颜色(2字节颜色空间类型 + 4*2字节颜色值)

9. 4字节(char):混合模式签名,总是为 '8BIM'

10. 4字节(char):结构:混合模式类型(见混合模式类型)

11. 1字节(bool):结构:启用效果标记

12. 1字节(bool):结构:使用全局光标记

13. 1字节(byte):结构:不透明度

14. 10字节(仅版本号为2时):结构:天然颜色(2字节颜色空间类型 +

4*2字节颜色值)

d) 外发光效果,效果签名为'oglw'

1. 4字节(int):外发光效果图层数据长度,根据不同版本为32字节或42字节

2. 4字节(int):版本号(Photoshop 5.0为0,Photoshop 5.5以上为2)

3. 4字节(int):图素:发光大小

4. 4字节(int):图素:图层蒙版扩展

5. 10字节:结构:发光颜色(2字节颜色空间类型 + 4*2字节颜色值)

6. 4字节(char):混合模式签名,总是为 '8BIM'

7. 4字节(char):结构:混合模式类型(见混合模式类型)

8. 1字节(bool):结构:启用效果标记

9. 1字节(byte):结构:不透明度

10. 10字节(仅版本号为2时):结构:天然颜色(2字节颜色空间类型 +

4*2字节颜色值)

e) 内发光效果,效果签名为'iglw'

1. 4字节(int):内发光效果图层数据长度,根据不同版本为32字节或43字节

2. 4字节(int):版本号(Photoshop 5.0为0,Photoshop 5.5以上为2)

3. 4字节(int):图素:发光大小

4. 4字节(int):图素:图层蒙版缩小(阻塞)

5. 10字节:结构:发光颜色(2字节颜色空间类型 + 4*2字节颜色值)

6. 4字节(char):混合模式签名,总是为 '8BIM'

7. 4字节(char):结构:混合模式类型(见混合模式类型)

8. 1字节(bool):结构:启用效果标记

9. 1字节(byte):结构:不透明度

10. 1字节(bool):图素:光源类型标记,0为从边缘发光照亮,1为从中心发光照亮

11. 10字节(仅版本号为2时):结构:天然颜色(2字节颜色空间类型 +

4*2字节颜色值)

f) 斜面和浮雕效果,效果签名为'bevl'

1. 4字节(int):斜面和浮雕效果图层数据长度,根据不同版本为58字节或78字节

2. 4字节(int):版本号(Photoshop 5.0为0,Photoshop 5.5以上为2)

3. 4字节(int):阴影:光源角度

4. 4字节(int):结构:斜面大小

5. 4字节(int):结构:斜面柔和度(软化)

6. 4字节(char):阴影:高光模式签名,总是为 '8BIM'

7. 4字节(char):阴影:高光模式类型(见混合模式类型)

8. 4字节(char):阴影:阴影模式签名,总是为 '8BIM'

9. 4字节(char):阴影:阴影模式类型(见混合模式类型)

10. 10字节:阴影:高光颜色(2字节颜色空间类型 + 4*2字节颜色值)

11. 10字节:阴影:阴影颜色(2字节颜色空间类型 + 4*2字节颜色值)

12. 1字节(byte):斜面和浮雕效果样式,0为外斜面、1为内斜面、2为浮雕效果、3为枕状浮雕、4为描边浮雕

13. 1字节(byte):阴影:高光不透明度

14. 1字节(byte):阴影:阴影不透明度

15. 1字节(bool):启用效果标记

16. 1字节(bool):阴影:使用全局光标记

17. 1字节(byte):结构:方向,0为上,1为下

18. 10字节(仅版本号为2时):阴影:真实高光颜色(2字节颜色空间

类型 + 4*2字节颜色值)

19. 10字节(仅版本号为2时):阴影:真实阴影颜色(2字节颜色空间类型 + 4*2字节颜色值)

g) 颜色叠加效果,效果签名为'sofi' (Photoshop 7.0)

1. 4字节(int):颜色叠加效果图层数据长度,总是为34

2. 4字节(int):版本号,总是为2

3. 4字节(char):颜色:颜色叠加效果样式签名,总是为 '8BIM'

4. 4字节(char):颜色:颜色叠加效果样式类型(见混合模式类型)

5. 10字节:颜色:颜色(2字节颜色空间类型 + 4*2字节颜色值)

6. 1字节(byte):颜色:不透明度

7. 1字节(bool):启用效果标记

8. 10字节:颜色:天然颜色(2字节颜色空间类型 + 4*2字节颜色值)

14. 效果图层2,标签为:'lfx2' (Photoshop 6.0以上)。

从Photoshop 6.0开始,Photoshop采用了对象的格式保存效果图层,下面先介绍各种Photoshop的基础对象数据格式:

这里先介绍一下Photoshop对象中经常用到的2种数据格式:Unicode名称和ID

1) Unicode名称(下面缩写为(Name))数据格式为:字符串长度(4字节)+ 2字节 * 字符串长度

2) ID(下面缩写为(ID))数据格式为:ID长度(4字节)+ 1字节 * ID长度,如果ID长度为0或小于4,则表示ID长度为4

基础对象数据格式有:

3) 布尔型对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='bool', // 对象类型(char),总是为'bool',4字节

value=? // 值(bool),1字节

}

4) 整型对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='long', // 对象类型(char),总是为'long',4字节

value=? // 值(int),4字节

}

5) 浮点型对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='doub', // 对象类型(char),总是为'doub',4字节

value=? // 值(double),8字节

}

6) Unicode文本型对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='TEXT', // 对象类型(char),总是为'TEXT',4字节

length=? // 文本长度(int),4字节

text=".." // 文本字符串,2字节*文本长度

}

7) 单位值型对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='UntF',

unit='..'

value=0.0

// 对象类型(char),总是为'UntF',4字节

// 单位标签(char),4字节

// 值(double),8字节

}

8) 枚举型对象:其值指向枚举对象的某一个值

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='enum', // 对象类型(char),总是为'enum',4字节

enumId=".." // 枚举类ID(ID),

enum=".." // 枚举ID(ID)

}

9) 数据型对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='alis', // 对象类型(char),总是为'alis',4字节

length=?, // 数据长度(int),4字节

data=".." // 数据,1字节*数据长度

}

10) 类和全局类对象:

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='type', // 对象类型(char),'type'为类,'GlbC'为全局类,4字节

name=".." // 类名(Name)

classID=".." // 类id(ID)

}

11) 对象型对象: 对象型对象的属性对象即各种Photoshop的基础对象

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='Objc', // 对象类型(char),'Objc'为类,'GlbO'为全局类,4字节

name="..", // 对象名(Name)

classID='..', // 类ID(ID)

count=?, // 属性对象数量(int),4字节

properties=[..] // 属性对象列表

}

12) 列表型对象: 列表型对象的对象列表中的对象为各种没有id的Photoshop的基础对象

{

id="?", // 对象ID,用于说明对应的photoshop属性(ID)

type='VlLs', // 对象类型(char),总是为'VlLs',4字节

count=? // 对象列表中的对象数量(int),4字节

objs=[..] // 对象列表

}

13) 引用型对象:

{

id = "?", // 对象ID,用于说明对应的photoshop属性(ID)

Type = 'obj ', // 对象类型(char),总是为'obj ',4字节

Count = "?", // 属性对象数量(int),4字节

Properties = [..] // 属性对象列表

}

引用型对象的属性对象是一个没有id的对象,包括以下类型:

1. Property对象:

{

type='prop', // 对象类型(char),总是为'prop',4字节

name="..", // 属性名(Name)

classID="..", // 类id(ID)

keyId=".." // Key ID(ID)

}

2. 类:

{

type='Clss', // 对象类型(char),总是为'Clss',4字节

name="..", // 属性名(Name)

classID=".." // 类id(ID)

}

3. 值来自枚举ID的枚举型属性对象:

{

type='Enmr', // 对象类型(char),总是为'Enmr',4字节

name="..", // 属性名(Name),

classID="..", // 类id(ID),

typeId="..", // 枚举类型ID(ID),

enum=".." // 枚举ID(ID)

}

4. 有值的普通属性对象

{

type='rele', // 对象类型(char),总是为'rele',4字节

name="..", // 属性名(Name)

classID="..", // (类id(ID)

value=? // 值(int)(4字节)

}

5. 索引号属性对象

{

type='Idnt', // 对象类型(char),总是为'Idnt',4字节

value=? // 索引号(int)(4字节)

}

6. 序号属性对象:

{

type='indx', // 对象类型(char),总是为'indx',4字节

value=? // 序号(int)(4字节)

}

7. Unicode名称对象

{

type='name', // 对象类型(char),总是为'name',4字节

name=".." // 名称(Name)

}

现在回到效果图层2的数据格式:

1) 4字节(int):效果图层版本号,总是为0

2) 4字节(int):对象解析版本号,总是为16

3) 名称长度(4字节)+ 2字节 * 名称长度:效果图层Unicode类名

4) ID长度(4字节)+ 1字节 * ID长度:效果图层类ID,如果ID长度为0,则表示

ID长度为4

5) 效果图层对象列表,效果图层对象的对象格式分别为:

1. 显示效果图层标记为布尔型:

{id="masterFXSwitch", type='bool', value=?}

2. 缩放效果图层(未使用)为单位值型:

{id="Scl ", type='UntF', unitID='#Prc', value=?}

3. 投影效果图层为对象型:

{id="DrSh", type='Objc', name="..",

classId="..", count=?(属性数量), properties[]=".."(属性列表)}

其属性对象格式分别为:

a) “品质:图层挖空投影标记”为布尔型:

{ID="layerConceals", type="bool", value=?}

b) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

c) “结构:混合模式类型”为枚举型:

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

混合模式类型包括:

'Nrml':正常、 'Dslv':溶解、 'Drkn':变暗、

'Mltp':正片叠底、 'CBrn':颜色加深、 'Lghn':变亮、

'Scrn':滤色、 'CDdg':颜色减淡、 'Ovrl':叠加、

'SftL':柔光、 'HrdL':强光、 'Dfrn':差值、

'Xclu':排除、 'H ':色相、 'Strt':饱和度、

'Clr ':颜色、 'Lmns':明度

d) “结构:阴影颜色”与“结构:天然颜色”相同,都是对象型:

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

其颜色属性对象为浮点型,依次为R、G、B,共3个,格式分别为:

红色:{id="Rd ", type='doub', value=?}

绿色:{id="Grn ", type='doub', value=?}

蓝色:{id="Bl ", type='doub', value=?}

e) “结构:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

f) “结构:使用全局光标记”为布尔型: {ID="uglg", type="bool", value=?}

g) “结构:光源角度”为单位值型:

{id="lagl", type="UntF", unit="#Ang", value=?}

h) “结构:阴影位移距离”为单位值型:

{id="Dstn", type="UntF", unit="#Pxl", value=?}

i) “结构:图层蒙版扩展”为单位值型:

{id="Ckmt", type="UntF", unit="#Pxl", value=?}

j) “结构:阴影大小”为单位值型:

{id="blur", type="UntF", unit="#Pxl", value=?}

k) “品质:向阴影添加杂色值”为单位值型:

{id="Nose", type="UntF", unit="#Prc", value=?}

l) “品质:消除锯齿标记”为布尔型:{ID="AntA", type="bool", value=?}

m) “品质:等高线”为对象型:

{id="TrnS ", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

其属性对象格式为:

1. “等高线名称”为文本型:

{id="Nm ", type='TEXT', length=?, text=".."}

2. “等高线曲线”为列表型对象:

{id="Crv ", type='VlLs',

count=?(曲线点数量), objs=[..](曲线点列表)}

其曲线点对象为对象型,因为是列表型对象的属性,所以没有id:

{type='Objc', name=".."(曲线点名),

classID='CrPt', count=?(属性数量(int),4字节),

properties=[..](属性列表)}

其属性对象分别为:

“输入(水平坐标)”为浮点型:{id="Hrzn", type="doub", value=?}

“输出(垂直坐标)”为浮点型:{id="Vrtc", type="doub", value=?}

“点角度标记”为浮点型:{id="Cnty", type="bool", value=?}

4. 内阴影效果图层为对象型:

{id="IrSh", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

其属性对象格式分别为:

a) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

b) “结构:混合模式类型”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

c) “结构:阴影颜色”与“结构:天然颜色”相同,都是对象型(颜色对象类型同上):

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

d) “结构:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

e) “结构:使用全局光标记”为布尔型:{ID="uglg", type="bool", value=?}

f) “结构:光源角度”为单位值型:

{id="lagl", type="UntF", unit="#Ang", value=?}

g) “结构:阴影位移距离”为单位值型:

{id="Dstn", type="UntF", unit="#Pxl", value=?}

h) “结构:图层蒙版缩小(阻塞)”为单位值型:

{id="Ckmt", type="UntF", unit="#Pxl", value=?}

i) “结构:阴影大小”为单位值型:

{id="blur", type="UntF", unit="#Pxl", value=?}

j) “品质:向阴影添加杂色值”为单位值型:

{id="Nose", type="UntF", unit="#Prc", value=?}

k) “品质:消除锯齿标记”为布尔型:{ID="AntA", type="bool", value=?}

l) “品质:等高线”为对象型(等高线对象同上):

{id="TrnS ", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

5. 外发光效果图层为对象型:

{id="OrGl", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

其属性对象格式分别为:

a) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

b) “结构:混合模式类型”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

c) “结构:发光颜色”与“结构:天然颜色”相同,都是对象型(颜色对象同上):

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

d) “结构:渐变色信息”为对象型:

{id="Grad ", type= 'Objc',

name=".."(渐变色对象名), classID='Grdn',

count=?(属性数量), properties=[..](属性列表)}

其属性对象格式分别为:

“渐变色名称”为文本型:

{id="Nm ", type='TEXT', length=?, text=".."};

“自定义渐变”为枚举型:

{ID="GrdF", type="enum",

enumID="GrdF"(渐变枚举类), enum="CstS"(自定义渐变类型)}

“平滑度”为浮点型,{id="Intr", type="doub", value=?}

“渐变色标信息”为列表型对象:

{id="Clrs ", type='VlLs', count=?(色标数量), objs=[..](色标列表)}

其色标对象为对象型,因为是列表型对象的属性,所以没有id:

{type='Objc', name=".."(色标名),

classID='Clrt', count=4(属性数量,总是为4),

properties=[..](属性列表)}

共有4个属性对象,分别为:

“颜色”为对象型(颜色对象同上):

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3),

properties=[..](颜色属性列表)}

“色标类型”为枚举型:

{ID="Type", type="enum",

enumID=".."(色标类型枚举类), enum=".."(色标类型)}

色标类型包括'FrgC'(前景色)、'BckC'(背景色)、'UsrS'(用户颜色)

“位置”为整型,{id="Lctn", type="long", value=?}

“中间点”为整型,{id="Mdpn",type="long",value=?}

“不透明色标”为列表型对象:

{id="Trns ", type='VlLs',

count=?(不透明色标数量), objs=[..](不透明色标列表)}

其不透明色标对象为对象型,因为是列表型对象的属性,所以没有id:

{type='Objc', name=".."(不透明色标名),

classID='TrnS',count=3(属性数量,总是为3),

properties=[..](属性列表)}

共有3个属性对象,分别为:

“不透明度”为单位值型:

{id="Opct", type="UntF",

unit="#Prc",value=?(实际值为value*2.55+0.5)}

“位置”为整型,{id="Lctn", type="long", value=?}

“中间点”为整型,{id="Mdpn", type="long", value=?}

e) “结构:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

f) “图素:柔化蒙版的方法”,为枚举型:

{ID="GlwT", type="enum",

enumID="BETE"(方法枚举类), enum=".."(方法类型)}

方法类型包括'SfBL'(柔和)、'PrBL'(精确)、'Slmt'(平滑)

g) “图素:图层蒙版扩展”为单位值型:

{id="Ckmt", type="UntF", unit="#Pxl", value=?}

h) “图素:发光大小”为单位值型:

{id="blur", type="UntF", unit="#Pxl", value=?}

i) “结构:杂色”为单位值型:

{id="Nose", type="UntF", unit="#Prc", value=?}

j) “品质:抖动”为单位值型:

{id="ShdN", type="UntF", unit="#Prc", value=?}

k) “品质:消除锯齿标记”为布尔型:{ID="AntA", type="bool", value=?}

l) “品质:等高线”为对象型(等高线对象同上):

{id="TrnS ", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

m) “品质:范围”为单位值型:

{id="Inpr", type="UntF", unit="#Prc", value=?}

6. 外发光效果图层为对象型:

{id="IrGl", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

a) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

b) “结构:混合模式类型”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

c) “结构:发光颜色”与“结构:天然颜色”相同,都是对象型(颜色对象同上)

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

d) “结构:渐变色信息”为对象型(渐变色对象同上):

{id="Grad ", type= 'Objc',

name=".."(渐变色对象名), classID='Grdn',

count=?(属性数量), properties=[..](属性列表)}

e) “结构:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

f) “图素:柔化蒙版的方法”,为枚举型:

{ID="GlwT", type="enum",

enumID="BETE"(方法枚举类), enum=".."(方法类型)}

方法类型包括'SfBL'(柔和)、'PrBL'(精确)、'Slmt'(平滑)

g) “图素:图层蒙版缩小(阻塞)”为单位值型:

{id="Ckmt", type="UntF", unit="#Pxl", value=?}

h) “图素:发光大小”为单位值型:

{id="blur", type="UntF", unit="#Pxl", value=?}

i) “品质:抖动”为单位值型:

{id="ShdN", type="UntF", unit="#Prc", value=?}

j) “结构:杂色”为单位值型:

{id="Nose", type="UntF", unit="#Prc", value=?}

k) “品质:消除锯齿标记”为布尔型: {ID="AntA", type="bool", value=?}

l) “图素:光源类型标记”,为枚举型:

{ID="glwS", type="enum",

enumID="IGSr"(光源类型枚举类), enum=".."(光源类型)}

光源类型包括'SrcC'(从中心发光照亮)、'SrcE'(从边缘发光照亮)

m) “品质:等高线”为对象型(等高线对象同上):

{id="TrnS ", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

n) “品质:范围”为单位值型:

{id="Inpr", type="UntF", unit="#Prc", value=?}

7. 斜面和浮雕效果图层为对象型:

{id="ebbl", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

a) “阴影:光泽等高线消除锯齿标记”为布尔型:

{ID="antialiasGloss", type="bool", value=?}

b) “等高线:等高线启用标记”为布尔型:

{ID="useShape", type="bool", value=?}

c) “纹理:纹理启用标记”为布尔型:

{ID="useTexture",type="bool",value=?}

d) “纹理:深度”为单位值型:

{id="textureDepth", type="UntF", unit="#Prc", value=?}

e) “纹理:方向”为对象型:

{id="phase ", type= 'Objc', name=".."(方向对象名),

classID='Pnt ', count=?(属性数量), properties=[..](属性列表)}

其方向属性对象为单位值型,格式分别为:

“水平方向”: {id="Hrzn", type="UntF", unit="#Prc", value=?}

“垂直方向”: {id="Vrtc", type="UntF", unit="#Prc", value=?}

f) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

g) “阴影:高光模式”为枚举型(混合模式类型同上):

{ID="hglM", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

h) “阴影:高光颜色”与“阴影:真实高光颜色”相同,为对象型(颜色对象同上)

{id="hglC", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

i) “阴影:高光不透明度”为单位值型:

j)

k)

l)

m)

n)

o)

p)

q)

r)

s)

t)

u)

v)

w)

x)

y)

{id="hglO", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

“阴影:阴影模式”为枚举型(混合模式类型同上):

{ID="sdwM", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

“阴影:阴影颜色”与“阴影:真实阴影颜色”相同,为对象型(颜色对象同上)

{id="sdwC", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

“阴影:阴影不透明度”为单位值型:

{id="sdwO", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

“结构:斜面方法”,为枚举型:

{ID="bvlT", type="enum",

enumID="bvlT"(斜面方法枚举类), enum=".."(方法类型)}

方法类型包括'SfBL'(浮雕柔和)、'PrBL'(浮雕精确)、'Slmt'(平滑)

“结构:斜面和浮雕效果样式”,为枚举型:

{ID="bvlS", type="enum",

enumID="BESl"(斜面和浮雕效果样式枚举类),

enum=".."(斜面和浮雕效果样式类型)}

斜面和浮雕效果样式类型包括'OtrB'(外斜面)、'InrB'(内斜面)、'Embs'(浮雕效果)、'PlEb'(枕状浮雕)、"strokeEmboss"(描边浮雕)

“阴影:使用全局光标记”为布尔型:{ID="uglg", type="bool", value=?}

“阴影:光源角度”为单位值型:

{id="lagl", type="UntF", unit="#Ang", value=?}

“阴影:光源高度”为单位值型:

{id="Lald", type="UntF", unit="#Ang", value=?}

“结构:深度”为单位值型:

{id="srgR", type="UntF", unit="#Prc", value=?}

“结构:斜面大小”为单位值型:

{id="blur", type="UntF", unit="#Pxl", value=?}

“结构:方向”,为枚举型:

{ID="bvlD", type="enum",

enumID="BESs"(方向枚举类), enum=".."(方向类型)}

方向类型包括'In'(向上)、'Out'(向下)

“阴影:光泽等高线”为对象型(等高线对象同上):

{id="TrnS ", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

“结构:斜面柔和度(软化)”为单位值型:

{id="Sftn", type="UntF", unit="#Pxl", value=?}

“等高线:等高线”为对象型(等高线对象同上):

{id="MpgS", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

“等高线:消除锯齿标记”为布尔型:

{ID="AntA", type="bool", value=?}

“等高线:范围”为单位值型:

{id="Inpr", type="UntF", unit="#Prc", value=?}

z) “纹理:反相标记”为布尔型:{ID="InvT", type="bool", value=?}

aa) “纹理:与图层链接标记”为布尔型: {ID="Algn", type="bool", value=?}

bb) “纹理:缩放”为单位值型:

{id="Scl ", type="UntF", unit="#Prc", value=?}

cc) “纹理:图案信息”为对象型:

{id="Ptrn", type= 'Objc',

name=".."(对象名称), classID='Ptrn',

count=?(属性数量), properties=[..](属性列表)}

其属性对象为:

“图案名称”为文本型,{id="Nm ", type='TEXT', length=?,

text=".."}

“图案识别符”为文本型,{id="Idnt", type='TEXT', length=?,

text=".."}

8. 光泽效果图层为对象型:

{id="ChFX", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

a) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

b) “结构:光泽效果样式”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

c) “结构:颜色”为对象型(颜色对象同上):

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

d) “结构:消除锯齿标记”为布尔型: {ID="AntA", type="bool", value=?}

e) “结构:反相标记”为布尔型:{ID="Invr", type="bool", value=?}

f) “结构:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

g) “结构:光源角度”为单位值型:

{id="lagl", type="UntF", unit="#Ang", value=?}

h) “结构:位移距离”为单位值型:

{id="Dstn", type="UntF", unit="#Pxl", value=?}

i) “结构:大小”为单位值型:

{id="blur", type="UntF", unit="#Pxl", value=?}

j) “结构:等高线”为对象型(等高线对象同上):

{id="MpgS", type= 'Objc',

name=".."(对象名称), classID='ShpC',

count=?(属性数量), properties=[..](属性列表)}

9. 颜色叠加效果图层为对象型:

{id="SoFi", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

a) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

b) “颜色:颜色叠加效果样式”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

c) “颜色:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

d) “颜色:发光颜色”与“颜色:天然颜色”相同,都是对象型(颜色对象同上)

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

10. 渐变叠加效果图层为对象型:

{id="GrFl", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

a) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

b) “渐变:渐变叠加效果样式”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

c) “渐变:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

d) “渐变:渐变信息”为对象型(渐变色对象同上):

{id="Grad ", type= 'Objc',

name=".."(渐变色对象名), classID='Grdn',

count=?(属性数量), properties=[..](属性列表)}

e) “渐变:渐变角度”为单位值型:

{id="Angl", type="UntF", unit="#Ang", value=?}

f) “渐变:渐变样式”为枚举型:

{ID="Type", type="enum",

enumID="GrdT"(渐变枚举类), enum=".."(渐变类型)}

渐变类型包括:'Lnr '(线性渐变)、'Rdl '(径向渐变)、'Angl'(角度渐变)、'Rflc'(对称渐变)、'Dmnd'(菱形渐变)

g) “渐变:反相标记”为布尔型:{ID="Rvrs", type="bool", value=?}

h) “渐变:与图层对齐标记”为布尔型:{ID="Algn", type="bool", value=?}

i) “渐变:渐变大小(缩放)”为单位值型:

{id="Scl ", type="UntF", unit="#Prc", value=?}

j) “渐变:方向”为对象型(方向对象同上):

{id="Ofst", type= 'Objc', name=".."(对象名称),

classID='Pnt ', count=?(属性数量), properties=[..](属性列表)}

11. 图案叠加效果图层为对象型:

{id="patternFill", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

其属性对象格式分别为:

a) “图案:方向”为对象型(方向对象同上):

{id="phase", type= 'Objc',name=".."(对象名称),

classID='Pnt ', count=?(属性数量), properties=[..](属性列表)}

b) “启用效果标记”为布尔型:{ID="enab",type="bool",value=?}

c) “图案:图案叠加效果样式”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

d) “图案:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

e) “图案:图案信息”为对象型(图案对象同上):

{id="Ptrn", type= 'Objc',

name=".."(对象名称), classID='Ptrn',

count=?(属性数量),properties=[..](属性列表)}

f) “图案:图案大小(缩放)”为单位值型:

{id="Scl ", type="UntF", unit="#Prc", value=?}

g) “图案:与图层链接标记”为布尔型:{ID="Algn",type="bool",value=?}

12. 描边效果图层为对象型:

{id="FrFX", type='Objc', name="..", classId="..",

count=?(属性数量), properties[]=".."(属性列表)}

a) “颜色类型-图案:方向”为对象型(方向对象同上):

{id="phase", type= 'Objc', name=".."(对象名称),

classID='Pnt ', count=?(属性数量), properties=[..](属性列表)}

b) “启用效果标记”为布尔型:{ID="enab", type="bool", value=?}

c) “结构:位置”为枚举型:

{ID="Styl", type="enum",

enumID="FStl"(位置枚举类), enum=".."(位置类型)}

位置类型包括:'OutF'(外部)、'InsF'(内部)、'CtrF'(居中)

d) “结构:颜色类型”为枚举型:

{ID="PntT", type="enum",

enumID="FrFl"(颜色类型枚举类), enum=".."(颜色类型)}

颜色类型包括:'SClr'(颜色)、'GrFl'(渐变)、'Ptrn'(图案)

e) “结构:描边效果样式”为枚举型(混合模式类型同上):

{ID="Md ", type="enum",

enumID="BlnM"(混合模式枚举类), enum=".."(混合模式类型)}

f) “结构:不透明度”为单位值型:

{id="Opct", type="UntF", unit="#Prc",

value=?(实际值为value*2.55+0.5)}

g) “结构:描边宽度(大小)”为单位值型:

{id="Sz ", type="UntF", unit="#Pxl", value=?}

h) “颜色类型-颜色:颜色”为对象型(颜色对象同上):

{id="Clr ", type= 'Objc',

name=".."(颜色对象名), classID='RGBC',

count=3(颜色数量,总是为3), properties=[..](颜色属性列表)}

i) “颜色类型-渐变:渐变信息”为对象型(渐变色对象同上):

{id="Grad ", type= 'Objc',

name=".."(渐变色对象名), classID='Grdn',

count=?(属性数量), properties=[..](属性列表)}

j) “颜色类型-渐变:渐变角度”为单位值型:

{id="Angl", type="UntF", unit="#Ang", value=?}

k) “颜色类型-渐变:渐变样式”为枚举型:

{ID="Type", type="enum",

enumID="GrdT"(渐变枚举类), enum=".."(渐变类型)}

渐变类型包括:'Lnr '(线性渐变)、'Rdl '(径向渐变)、'Angl'(角度渐变)、'Rflc'(对称渐变)、'Dmnd'(菱形渐变)

l) “颜色类型-渐变:反相标记”为布尔型:

{ID="Rvrs", type="bool", value=?}

m) “颜色类型-渐变:渐变大小(缩放)”或“颜色类型-图案:图案大小(缩放)”为单位值型:

{id="Scl ", type="UntF", unit="#Prc", value=?}

n) “颜色类型-渐变:与图层对齐标记”为布尔型:

{ID="Algn", type="bool", value=?}

o) “颜色类型-渐变:方向”为对象型(方向对象同上):

{id="Ofst", type= 'Objc', name=".."(对象名称),

classID='Pnt ', count=?(属性数量), properties=[..](属性列表)}

p) “颜色类型-图案:图案信息”为对象型(图案对象同上):

{id="Ptrn", type= 'Objc',

name=".."(对象名称), classID='Ptrn',

count=?(属性数量), properties=[..](属性列表)}

q) “颜色类型-图案:与图层链接标记”为布尔型:

{ID="Lnkd", type="bool", value=?}

15. 文本图层,标签为:' tySh' (Photoshop 5.0或Photoshop 5.5)。

1) 2字节(short):版本号,总是为1

2) 6 * 8字节(double):6个文字变形信息

3) 2字节(short):字体信息版本号,总是为6

4) 2字节(short):字体数量

5) 字体信息列表,数据格式为:

1. 2字节(short):字体ID

2. 4字节(int):字体类型

3. 1字节(byte):字体名称长度

4. 1字节(char)* 字体名称长度:字体名称

5. 1字节(byte):字体族名称长度

6. 1字节(char)* 字体族名称长度:字体族名称

7. 1字节(byte):字体样式名称长度

8. 1字节(char)* 字体样式名称长度:字体样式名称

9. 2字节(short):字体脚本ID

10. 4字节(int):矢量字体点数量

11. 4字节(int)* 矢量字体点数量:矢量字体点值

6) 2字节(short):文字效果数量

7) 文字效果信息列表,数据格式为:

1. 2字节(short):文字效果ID

2. 2字节(short):对应字体ID

3. 4字节(int):字体大小

4. 4字节(int):字距调整值

5. 4字节(int):字距微调值

6. 4字节(int):行距

7. 4字节(int):基线值

8. 1字节(bool):自动字距微调标记

9. 1字节(bool):旋转标记

8) 2字节(short):文本类型

9) 4字节(int):缩放参数

10) 4字节(int):特征点数量

11) 4字节(int):水平坐标

12) 4字节(int):垂直坐标

13) 4字节(int):选中文本起点

14) 4字节(int):选中文本终点

15) 2字节(short):行数

16) 行信息列表,数据格式为:

1. 4字节(int):每行字符数

2. 2字节(short):文本方向

3. 2字节(short):文本对齐方式

4. 字符信息列表,数据格式为:

a) 2字节(wchar_t):Unicode字符

b) 2字节(short):对应字体效果ID

17) 10字节:文字颜色(2字节(颜色空间) + 4 * 2字节(颜色值))

18) 1字节(bool):消除锯齿标记

16. 文本图层,标签为:'TySh' ,对象格式(Photoshop 6.0以上)(略)

17. 纯色填充图层,标签为:'SoCo' ,对象格式 (Photoshop 6.0以上)

1) 4字节(int):对象解析版本号,总是为16

2) 名称长度(4字节)+ 2字节 * 名称长度:填充图层Unicode名称

3) ID长度(4字节)+ 1字节 * ID长度:填充图层类ID,如果ID长度为0,则表示ID长度为4

4) 4字节(int):属性对象数量,总是为1

5) 只有一个颜色属性对象,对象型,对象格式为:

{id="Clr ", type= 'Objc', name=".."(颜色对象名(Name)),

classID='RGBC', count=3(颜色数量,总是为3),

properties=[..](颜色属性列表)}

18. 渐变填充图层,标签为:'GdFl' ,对象格式 (Photoshop 6.0以上)

1) 4字节(int):对象解析版本号,总是为16

2) 名称长度(4字节)+ 2字节 * 名称长度:填充图层Unicode名称

3) ID长度(4字节)+ 1字节 * ID长度:填充图层类ID,如果ID长度为0,则表示ID长度为4

4) 4字节(int):属性对象数量

5) 属性对象列表,对象格式如下:

1. “仿色标记”为布尔型:{ID="Dthr", type="bool", value=?}

2. “反相标记”为布尔型:{ID="Rvrs", type="bool", value=?}

3. “与图层对齐标记”为布尔型:{ID = "Algn", type = "bool", value = ? }

4. “渐变角度”为单位值型:{id="Angl", type="UntF", unit="#Ang", value=?}

5. “渐变大小(缩放)”为单位值型:

{id="Scl ", type="UntF", unit="#Prc", value=?}

6. “渐变样式”为枚举型:

{ID="Type", type="enum",

enumID="GrdT"(渐变枚举类), enum=".."(渐变类型)}

渐变类型:'Lnr '(线性渐变)、'Rdl '(径向渐变)、'Angl'(角度渐变)、'Rflc'(对称渐变)、'Dmnd'(菱形渐变)

7. “渐变:渐变信息”为对象型(渐变色对象同上)

id="Grad ", type= 'Objc',

name=".."(渐变色对象名), classID='Grdn',

count=?(属性数量), properties=[..](属性列表)}

19. 图案填充图层,标签为:' PtFl ' ,对象格式 (Photoshop 6.0以上)

1) 4字节(int):对象解析版本号,总是为16

2) 名称长度(4字节)+ 2字节 * 名称长度:填充图层Unicode名称

3) ID长度(4字节)+ 1字节 * ID长度:填充图层类ID,如果ID长度为0,则表示ID长度为4

4) 4字节(int):属性对象数量

5) 属性对象列表,对象格式如下:

1. “图案大小(缩放)”为单位值型:

{id="Scl ", type="UntF", unit="#Prc", value=?}

2. “图案信息”为对象型(图案对象同上):

{id="Ptrn", type= 'Objc',

name=".."(对象名称), classID='Ptrn',

count=?(属性数量), properties=[..](属性列表)}

20. 图层名称,标签为:'lnsr' (Photoshop 5.0以上)

1) 名称长度(4字节)+ 2字节 * 名称长度:图层Unicode名称

21. 图层ID,标签为:'lyid' (Photoshop 5.0以上)

1) 4字节(int):图层ID

22. 图层剪贴混合标记,标签为:'clbl' (Photoshop 6.0以上)

1) 1字节(bool):图层剪贴混合标记

2) 3字节:保留

23. 图层内部混合标记,标签为:'infx' (Photoshop 6.0以上)

1) 1字节(bool):图层剪贴混合标记

2) 3字节:保留

24. 锁定全部标记,标签为:'knko' (Photoshop 6.0以上)

1) 1字节(bool):锁定全部标记

2) 3字节:保留

25. 保护设置标记,标签为:'lspf ' (Photoshop 6.0以上)

1) 4字节(int):保护设置标记,保护设置标记 ,Photoshop 6.0使用了0-2位,分别为:

1. 0位:锁定透明图像像素标记

2. 1位:锁定图像像素标记

3. 2位:锁定位置标记

26. 图层注释颜色,标签为:'lclr' (Photoshop 6.0以上)

1) 4 * 1字节(byte):读取图层注释颜色,依次为R、G、B、A

2) 4字节:保留

27. 图层参考点设置,标签为:'fxrp' (Photoshop 6.0以上)

1) 8字节(double):图层参考点X

2) 8字节(double):图层参考点Y

28. 图层版本号,标签为:'lyvr' (Photoshop 7.0以上)

1) 4字节(int):图层版本号

29. 透明形状图层标记,标签为:'tsly' (Photoshop 7.0以上)

1) 1字节(bool):透明形状图层标记

2) 3字节:保留

30. 图层蒙版隐藏效果标记,标签为:'lmgm' (Photoshop 7.0以上)

1) 1字节(bool):图层蒙版隐藏效果标记

2) 3字节:保留

31. 矢量蒙版隐藏效果标记,标签为:'vmgm' (Photoshop 7.0以上)

1) 1字节(bool):矢量蒙版隐藏效果标记

2) 3字节:保留

32. 图层填充不透明度,标签为:'iOpa'

1) 1字节(byte):图层填充不透明度(0-255)

2) 3字节:保留

33. 图层类型,标签为:'lsct',(Photoshop 6.0以上)

1) 4字节(int):图层类型,0为普通图层、1为展开的图层组,2为关闭的图层组,3为图层分割线(隐藏图层)

如果数据长度为12,表示有图层分割混合模式设置

2) 4字节(char):签名,总是为'8BIM'

3) 4字节(char):图层分割混合模式类型(同上,注:不是对象的混合模式)

34. 禁用图层通道设置,标签为:'brst',(Photoshop 6.0以上),数据为禁用图层通道ID列表,禁用的图层通道数量可以通过 数据长度/4 获得,数据格式为:

1) 4字节(int):被禁用的图层通道ID

35. 矢量图层蒙版,标签为:'vmsk',(Photoshop 6.0以上)

1) 4字节(int):版本号,总是为3

2) 4字节(int):状态标记,0位为反转选区标记,1位为不链接标记, 位2为禁用标记

3) 路径列表,其数据长度为 数据长度-8,数据格式同(ID 2000-2998:路径资源)

5. 图层中的各通道图像数据列表,数据长度来自前面的图层数据长度信息,数据格式如下:

1) 2字节(short):各通道图像数据压缩方式,0为不压缩、1为RLE压缩、2为ZIP without prediction、3为ZIP with prediction

2) 后面的数据为图层的图像数据,如果使用了图像压缩,需要先把后面的图像数据解压缩。数据解压后以每个通道一个数据块的形式保存,通道顺序由前面的图层通道信息顺序决定。

a) 各位图颜色通道说明:

1. 1位位图:包含1个黑色颜色通道, 1比特/像素,值为0表示白色,为1表示黑色,每行的字节数必须为偶数,多余的比特位为0。

2. 8位或16位灰度或双通道图像:双通道图像的数据结构与灰度图像相同,包含1个灰度颜色通道和透明蒙版通道(如果存在)。8位图像为1字节/像素、16位图像为2字节/像素。透明蒙版通道图层通道ID为-1

3. 8位索引图像:包含1个索引色颜色通道,1字节/像素,值为颜色索引ID,如果颜色索引ID和透明色索引ID相同,表示为透明色。

4. 8位或16位RGB图像:包含R、G、B三个颜色通道和透明蒙版通道(如果存在)。8位图像为1字节/像素、16位图像为2字节/像素。

5. 8位或16位CMYK图像:包含C、M、Y、K四个颜色通道和透明蒙版通道(如果存在)。8位图像为1字节/像素、16位图像为2字节/像素。

6. 8位或16位LAB图像:包含L、A、B三个颜色通道和透明蒙版通道(如果存在)。8位图像为1字节/像素、16位图像为2字节/像素。

b) 8位或16位图像还支持用户自定义颜色通道(图层通道ID为-2),8位图像为1字节/像素、16位图像为2字节/像素。

6. 剩余的图层数据为滤镜设置信息(略)

至此图层信息数据区结束,接下来是快速蒙版数据区。

7. 4字节(int):快速蒙版信息区数据长度

8. 10字节:快速蒙版颜色,2字节(颜色空间) + 4 * 2字节(颜色值)

9. 2字节(short):不透明度,0(透明)-100(不透明)

10. 1字节(byte):标记。 其中第0位为色彩指示,0表示被蒙版区域,1表示所选区域;第8位为应用到每个图层标记,此时快速蒙版优先于图层蒙版

11. 剩余的数据为快速蒙版滤镜设置信息(略)

12. 然后是其他信息数据区数据列表,主要包括16位图层信息和用户自定义图案信息

1) 16位图层信息数据格式如下:

a) 4字节(char):资源标签,总是为'8BIM'

b) 4字节(char):信息标签,总是为'Lr16'

c) 图层信息数据格式同上;

2) 用户自定义图案信息(Photoshop 6.0以上),数据格式如下:

a) 4字节(char):资源标签,总是为'8BIM'

b) 4字节(char):信息标签,总是为'Patt'或'Pat2'

c) 4字节(int):数据长度,长度必须是4的倍数,不足的后面补0

d) 图案信息列表,数据格式如下:

1. 4字节(int):图案数据区长度(4字节),长度必须是4的倍数,不足的后面补0

2. 4字节(int):版本号,总是为1

3. 4字节(int):图案颜色模式: 0为位图,1为灰度,2为索引色,3为RGB,4为CMYK,7为多通道,8为双色调,9为LAB

4. 2字节(short):图案高度

5. 2字节(short):图案宽度

6. 4字节(int)+ 2字节*名称长度:图案Unicode名称(名称长度 + 2字节*名称长度)

7. 1字节(byte)+ 2字节*ID长度:图案ID(ID长度 + 1字节*ID长度)

8. 如果是索引色,读取调色板信息(256 * RGB颜色值(3字节))

9. 4字节(int):图案版本

10. 4字节(int):解压后图案数据长度

11. 4 * 4字节(int):图案位置,依次为top, left, bottom, right

12. 4字节(int):最大通道数

13. 图案各通道信息列表,数据格式如下:

1) 4字节(int):是否已写入数组标记

2) 4字节(int):通道数据长度(压缩)

3) 4字节(int):像素颜色位数:值为1、8、16

4) 4 * 4字节(int):通道位置,依次为top, left, bottom, right

5) 2字节(short):像素颜色位数:值为1、8、16

6) 1字节(byte):压缩模式,,0为不压缩、1为RLE压缩、2为ZIP without prediction、3为ZIP with prediction。其中'Pat2'必然为ZIP压缩

7)

14. 后面的数据为该通道的图像数据,如果使用了图像压缩,需要先把后面的图像数据解压缩。加载所有通道后可以解析图像数据,数据格式同图层的图像数据。

3) 其他未知信息,数据格式如下:

a) 4字节(char):资源标签,总是为'8BIM'

b) 4字节(char):信息标签

c) 4字节(int):数据长度

六、 PSD混合图像数据(重要):PhotoShop所有图层混合后的最终效果图,数据长度为剩余的文件长度,数据格式如下:

1) 2字节(short):混合图像数据压缩方式,0为不压缩、1为RLE压缩、2为ZIP without prediction、3为ZIP with prediction

2) 后面的数据为图像数据,如果使用了图像压缩,需要先把后面的图像数据解压缩。数据解压后以每个通道一个数据块的形式保存。说明如下

a) 1位位图:包含1个黑色颜色通道, 1比特/像素,值为0表示白色,为1表示黑色,每行的字节数必须为偶数,多余的比特位为0。

b) 8位或16位灰度或双通道图像:双通道图像的数据结构与灰度图像相同,包含1个灰度颜色通道和透明蒙版通道(如果存在)。如果有透明蒙版通道,则通道排列顺序为透明蒙版通道在前,灰度颜色通道在后。8位图像为1字节/像素、16位图像为2字节/像素。

c) 8位索引图像:包含1个索引色颜色通道,1字节/像素,值为颜色索引ID,如果颜色索引ID和透明色索引ID相同,表示为透明色。

d) 8位或16位RGB图像:包含三个颜色通道和透明蒙版通道(如果存在),通道排序顺序为透明蒙版通道、R通道、G通道、B通道。8位图像为1字节/像素、16位图像为2字节/像素。

e) 8位或16位CMYK图像:包含四个颜色通道和透明蒙版通道(如果存在),通道排序顺序为透明蒙版通道、C通道、M通道、Y通道、K通道。8位图像为1字节/像素、16位图像为2字节/像素。

f) 8位或16位LAB图像:包含三个颜色通道和透明蒙版通道(如果存在),通道排序顺序为透明蒙版通道、L通道、A通道、B通道。8位图像为1字节/像素、16位图像为2字节/像素。

本文标签: 颜色图层标记对象通道