.PAL文件指的是Palette(调色板)文件,通常有两种格式:一是Microsoft(微软) PAL 文件,二进制格式用于PhotoShop 和 Paintshop Pro;一是JASC PAL文件,文本格式用于Paintshop Pro等。
JASC PAL文件是文本形式,一般259行,前三行分别是:
JASC-PAL
0100
256
其中256是调色板的颜色数,4-259行存储的是调色板256种颜色的RGB值,每个值以空格间隔,例如白色是‘255 255 255’,黑色是‘0 0 0 ’,示例的文件格式为:
125 125 125
255 255 255
0 128 0
255 0 0
0 255 0
255 255 0
255 128 0
255 0 255
0 0 255
1 1 1
Microsoft PAL文件是二进制形式。
PAL 文件实际上就是一个RIFF文件(和WAV文件和AVI文件相似),所以PAL文件以一个标准的RIFF文件头开始。
表 1: RIFF文件头
===============================================================
偏移 长度 描述
0x00 1 DWORD 标志 (一般是 0X52494646)
0x04 1 DWORD 文件长度减去 8
0x08 1 DWORD RIFF文件类型 (一般是 0X50414C20)
在RIFF文件头之后是所谓的"块"(在AVI文件中有多个"块",但是在PAL文件只有一个"块")。RIFF"块"的结构定义如下:
表 2: RIFF "块"结构
===============================================================
偏移 长度 描述
0x0B 1 DWORD 标志 (一般是 0X64617461)
0x10 1 DWORD 块的大小 (文件长度减去20)
0x14 n BYTES 数据
"块"结构中块的大小也就是数据的大小。数据中第一个DWORD的数据包含了调色板的信息。你可以把这个DWORD分成两个WORD型的数据。其中,高字节的WORD中包含了调色板中所包含颜色的数目,换句话说高字节WORD中包含了在第一个DWORD数据之后有多少个调色板实体。第一个DWORD数据的低字节WORD中包含了调色板的版本号,这个版本号一般是0X300。紧跟着第一个DWORD之后是一系列连续的DWORD类型的数据代表了调色板实体。一个调色板实体是这么编码的:0XRRGGBB00,这里R代表红色,G 代表绿色,B代表蓝色。
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---------------------------------------------------------------------------------------------------
52 49 46 46 50 00 00 00 50 41 4C 20 64 61 74 61
44 00 00 00 00 03 10 00 00 00 00 00 80 00 00 00
00 80 00 00 80 80 00 00 00 00 80 00 80 00 80 00
00 80 80 00 C0 C0 C0 00 80 80 80 00 FF 00 00 00
00 FF 00 00 FF FF 00 00 00 00 FF 00 FF 00 FF 00
00 FF FF 00 FF FF FF 00
Reference:
JASC-PAL http://liero.nl/lierohack/docformats/other-jasc.html
Microsoft PAL http://download.csdn.net/detail/jos34/3766850