PhotoShop文件格式解析.docx
《PhotoShop文件格式解析.docx》由会员分享,可在线阅读,更多相关《PhotoShop文件格式解析.docx(66页珍藏版)》请在冰点文库上搜索。
PhotoShop文件格式解析
PSD文件解析
(Izgame整理)
PSD文件结构为:
文件头信息
颜色映射表
图像资源
图层与蒙版信息
图像数据
PSD文件头信息结构
typedefstructtagPSD_FILE_
JHEADER
{
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
char
4
签名:
总是为‘8BPS'
version
short
2
版本:
总是为1(**PSB**版本为2)
reserved1-3
6
保留:
必须为0
number_of_channels
short
2
图片通道数量,包含所有颜色通道数和
alpha通道数。
支持范围为1-56
height_of_image
int
4
图片高度像素数,支持范围为1-30,000.
(**PSb**300,000.)
width_of_image
int
4
图片宽度像素数,支持范围为1-30,000.
(*PSB**300,000)
depth
short
2
每像素字节数:
支持的值为1,8,16.
color_mode
short
2
颜色模式.支持的值有:
Bitmap=0;
Grayscale=1;Indexed=2;RGB=3;CMYK=4Multichannel=7;Duotone=8;Lab=9.
PSD颜色映射表,在photoshop中仅有索引色模式和双色调模式有颜色映射表,数据格式如下:
1.4字节(int):
颜色映射表三色总颜色数
2.颜色映射表数据区:
颜色映射表中保存的颜色数量为“三色总颜色数/3",在颜色映射表中每个颜色
的RGBE色被分开保存,每个颜色值2字节,依次为R通道数据区、G通道数据区、B通道数据区。
四、PSD图像资源,起始为4字节的图像资源数量(int),然后为图像资源数据区,图像资源的数据结构为:
typedefstructtagPSD_IMAGE_RESOURCE{
DWORD
signature;
WORD
UniqueID;
BYTE
nNameSize;
BYTE*
name;
DWORD
nResourceSize;
BYTE*
data;
}psd_image_resource;
字段名
大小
(字节)
描述
signature
Int
4
签名,总是为‘8BIM'
UniqueID
Short
2
资源唯一索引号
nLength
Byte
1
;名称字符串长度
name
Char
nLength
名称,Pascal字符串,长度如果为奇数,在字符串末尾追加1个字节“0”
nSize
Int
4
[实际资源数据字节数
Data
Byte
nSize
实际图像资源数据,长度如果为奇数,在图像
资源数据末尾追加1个字节“0”
已知资源ID介绍:
1.ID1005:
图像分辨率,共16字节
1)4字节(int):
水平分辨率(像素/英寸)
2)2字节(short):
画布显示的水平分辨率单位,1:
像素/英寸,2:
厘米/英寸
3)2字节(short):
画布显示的宽度单位,1:
英寸,2:
厘米,3:
点,4:
派卡,5:
歹U
4)4字节(int):
垂直分辨率(像素/英寸)
5)2字节(short):
画布显示的垂直分辨率单位,1:
像素/英寸,2:
厘米/英寸
6)2字节(short):
画布显示的高度单位,1:
英寸,2:
厘米,3:
点,4:
派卡,5:
歹U
2.ID1006:
Alpha通道的名称列表,以Pascal字符串存储,即通道名称字符串长度(1字节)+通道
名称(最大255字节)。
可以通过计算名称数量获得总alpha通道数。
3.ID1007:
颜色通道信息
1)10字节:
颜色通道对应的颜色值:
2)2字节(short):
颜色值使用的颜色空间类型,颜色空间表示了PhotoShop把不同颜色模式转换
为屏幕RGB显示模式的取值方式。
颜色空间类型定义为:
以上)
12.ID1045:
Alpha通道的Unicode名称列表(Unicode字符串,每个字符由2个字节组成),存储格式
为:
通道Unicode名称字符串长度(4字节)+通道Unicode名称(字符串长度*2字节)。
可以通
过计算名称数量获得总alpha通道数。
(Photoshop5.0以上)
13.ID1046:
索引颜色表颜色数量(2字节)。
(Photoshop6.0以上)
14.ID1047:
索引颜色表中透明色的索引号(2字节)。
(Photoshop6.0以上)
15.ID1049:
全局光源高度(GlobalAltitude)(4字节)。
(Photoshop6.0以上)
16.ID1053:
Alpha通道ID号列表(4字节/ID号),可以通过计算ID号数量获得总alpha通道数。
(Photoshop6.0以上)
17.ID1057:
(Photoshop6.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.ID2000-2998:
Photoshop路径资源,ID范围为2000-2998。
路径资源数据由26字节的资源块组成,总长度为26x路径资源数量
起始的2字节(short)为路径资源类型,余下24字节根据类型,注释如下:
1)
类型0:
关闭的路径;
类型3:
打开的路径;
a)2字节(short):
路径中的贝塞尔节点数量
b)
22字节:
总是为0
c)22字节:
总是为0
19.ID2999:
EPS文件剪切路径(暂无资料)
Photoshop可能就没用的图像资源:
20.ID1009:
打印边框(边界)信息
1)(2字节实际数据,2字节分数):
打印边框宽度,固定值
2)2字节(short):
打印边框单位,1为英寸,2为厘米,3为点,4为派卡,5为列
21.ID1011:
打印设置标记
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.ID1032:
网格线信息(Photoshop4.0以上)
1)4字节(int):
版本号,总是为1
2)4字节(int):
水平方向网格线数量
3)4字节(int):
垂直方向网格线数量
址(URL)
l)4字节(int)+字符串长度*2:
HTMLB标(Target)Unicode字符串长度+HTMLB标(Target)
m)4字节(int)+字符串长度*2:
HTMLS片信息本Unicode字符串长度+HTML图片信息文本
n)4字节(int)+字符串长度*2:
HTMLA1t标记Unicode字符串长度+HTMLA1t标记
o)1字节(byte):
在单元格中显示文本的标记
p)4字节(int)+字符串长度*2:
在单元格中显示的文本Unicode字符串长度+在单元格中
显示的文本
q)4字节(int):
水平对齐位置
r)4字节(int):
垂直对齐位置
s)4*1字节(byte):
读取ARGEBT景颜色,依次为A-R-G-B颜色值
25.
ID1054:
URL歹U表(Photoshop6.0以上)
1)4字节(int):
URL列表数量
2)各个URL的详细信息
a)4字节(int):
4字节简略关联标签,如:
来自切片为“s1ic”
b)4字节(int):
关联ID
c)4字节(int)+字符串长度*2:
链接地址(URL)Unicode字符串长度+链接地址(URL)
26.ID1058,ID1059:
EXIF数据,不包含固定格式的EXIF头信息(Photoshop7.0以上)
27.ID1062:
打印缩放信息(Photoshop7.0以上)
1)2字节(short):
打印缩放类型,0为图像居中,1为缩放以适合介质,2为用户自定义
2)4字节(float):
X坐标位置
3)4字节(float):
Y坐标位置
4)4字节(float):
打印缩放比例
28.ID1064:
像素高宽比(PhotoshopCS以上)
1)4字节(int):
版本号,总是为1
2)8字节(double):
像素高宽比,像素点的X/Y值
29.ID10000:
打印出血信息
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.
各图层信息数据列表,包括图层的头信息、蒙版信息、效果图层信息及设置信息,其数据格式如下:
6)各个图层通道的头信息,数据格式如下:
a)2字节(short):
图层通道ID。
在RGE®像中:
0表示R通道,1表示G通道,2表示B通道;在CMY图像中:
0表示C通道,1表示M通道,2表示Y通道,3表示K通道,等等;另外-1表示透明蒙版,-2表示用户颜色通道。
b)4字节(int):
图层通道数据长度(PSB为8字节)
7)4字节(char):
混合模式签名,总是为'8BIM'
8)4字节(char):
混合模式类型,混合模式类型定义为
typedefenum{
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'=
colorburn
(颜色加深)
psd_blend_mode_linear_burn,
//'lbrn'=
linearburn
(线性加深)
psd_blend_mode_lighten,
//'lite'=
lighten
(变亮)
psd_blend_mode_screen,
//'scrn'
=screen(滤色)
(滤色)
psd_blend_mode_color_dodge,
//'div'=
colordodge
(颜色减淡)
psd_blend_mode_linear_dodge,
//'lddg'
=lineardodge
(线性减淡(添加))
psd_blend_mode_overlay,
//'over'
=overlay
(叠加)
psd_blend_mode_soft_light,
//'sLit'=
softlight
(柔光)
psd_blend_mode_hard_light,
//'hLit'=
hardlight
(强光)
psd_blend_mode_vivid_light,
//'vLit'=
vividlight
(亮光)
}psd_blend_mode;
9)1字节(byte):
不透明度,0为透明,255为不透明
10)1字节(byte):
剪贴蒙版标记,0为底板,1为贴图
11)1字节(byte):
图层设置标记,每一位为一个标记,由右向左依次为:
a)0位:
透明度保护标记
b)1位:
显示图层标记
c)2位:
停用图层标记
d)3位:
像素数据无关标记(Photoshop5.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'(PhotoShop8.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'(PhotoShop8.0以上),曲线附
加信息事实上与上面基本重复
6)2字节(short):
曲线附加信息版本,总是为4
7)4字节(int):
曲线通道数量
8)各通道曲线附加信息,数据格式如下:
1.2字节(short):
曲线通道索引号
2.2字节(short):
曲线通道中设置点的数量(2-19)
3.曲线通道中各设置点的信息,数据格式如下:
a)2字节(short):
曲线通道输出点强度(0-255)
b)2字节(short):
曲线通道输入点强度(0-255)
3.亮度/对比度调整图层,标签为:
'brit'
1)2字节(short)
2)2字节(short)
3)2字节(short)
4)1字节(byte):
亮度对比度
/对比度平均值
Lab颜色模式
4.色彩平衡调整图层,标签为:
'blnc'
1)2字节(short)
2)2字节(short)
3)2字节(short)
4)2字节(short)
5)2字节(short)
6)2字节(short)
7)2字节(short)
8)2字节(short)
9)2字节(short)
10)2字节(short)
R或C通道阴影设置信息(-100..100)
G或M通道阴影设置信息(-100..100)
B或Y通道阴影设置信息(-100..100)
R或C通道中间调设置信息(-100..100)
G或M通道中间调设置信息(-100..100)
B或Y通道中间调设置信息(-100..100)
R或C通道高光设置信息(-100..100)
G或M通道高光设置信息(-100..100)
B或Y通道高光设置信息(-100..100)
保持明度标记
5.色相/饱和度调整图层,标签为:
'hue2'
2字节(short):
版本号,总是为2
1)1字节(bool):
着色标记
2)1字节(byte):
保留
3)2字节(short):
色相(Photoshop5.0以上范围为-180...180,Photoshop4.0范围为
-100…100)
4)2字节(short):
饱和度(Photoshop5.0以上范围为0...100,Photoshop4.0范围为
-100…100)
5)2字节(short):
明度(-100...100)
6)2字节(short):
主色相
7)2字节(short):
主饱和度
8)2字节(short):
主明度
9)各颜色通道的色相/饱和度设置,共6个颜色通道,依次为红、黄、绿、青、蓝、洋
红,数据结构如下:
1.2字节(short)
2.2字节(short)
3.2字节(short)
4.2字节(short)
5.2字节(short)
6.2字节(short)
7.2字节(short)
-左
-左中
-右
-右中
色相饱和度明度
6.可选颜色调整图层,标签为: