PhotoShop文件格式解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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颜色映射表,在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;

已知资源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):当前文件版本

相关文档
最新文档