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字节/像素。
版权声明:本文标题:PhotoShop文件格式解析 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1703113595a39490.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论