- PCX是一种古老的 图像格式,现在已经被jpeg、png、gif等新生格式替代。但是作为图像处理新手的话,把它拿来练练手还很好的选择。
- PCX文档,由头文档、位图数据 (bitmap)、256色调色盘三部分构成。压缩采用的是RLE(Run Length Encoding)编码法,bitmap数据存的是已经压缩过的数据,且属于无损压缩。要读PCX文档就要进行RLE解码。
- 头文档:共有 128 bytes,要解码PCX,解读头文档非常重要。
- PCX头文件,最重要的是解读这几个部分:
- 版本号,若为5,通常在文件最末尾都有一个256色的调色盘,即文件的最后的768 bytes为调色盘数据,按顺序以R/G/B,每三个bytes构成一个调色盘的颜色,通常倒数的第769个bytes会是一个鉴定位,值一般为12,表示后面有256色调色盘。另外pcx档是支持24位全真彩的。
- 像素位 (第3个字节) 和 彩色平面数 (第65个字节) ,决定了图像的类别。如色彩平面数大于1 ,那就没有使用调色盘。例如:像素位:8 ,平面数:1 ,为256色图像,使用了末尾调色盘。像素位:8 ,平面数:3 ,为24为全彩图像,没有使用调试盘。
- 图像大小(第4个字节),可以得到整个图像的像素个数还有宽、高。要注意的是第一个像素是(0,0),所以算真实个数(宽、高)时:(Xmax - Xmin)+1,(Ymax - Ymin)+1。
起始字节 |
字节数 |
内容 |
解释 |
0 |
1 |
Zsoft标志 |
为10(0x0a),即为Zsoft PCX文件 |
1 |
1 |
版本号 |
0:PC Paintbrush 2.51,带调色板。 5:支持24位真彩. |
2 |
1 |
编码 |
1:RLE编码法 |
3 |
1 |
位/像素 |
每个平面的像素有几位,可能值为1、2,、4或8 |
4 |
8 |
图像大小 |
图像边界极限,一边两字节,按顺序为: Xmin、Ymin、Xmax、Ymax,以像素为单位。 |
12 |
2 |
水平分辨率 |
打印时,X方向的每英寸像素点的点数 |
14 |
2 |
垂直分辨率 |
打印时,Y方向的每英寸像素点的点数 |
16 |
48 |
文件头调色板 |
16色的“EGA/VGA”头调色板 |
64 |
1 |
保留字节 |
Zsoft保留,为0 |
65 |
1 |
平面 |
彩色平面数。PCX图像可以是单彩色,也可以具有多个彩色平面,平面数可为:1、2、3、4 |
66 |
2 |
每行字节数 |
每个色彩平面的每行字节数,即解压后图像每一行所占的字节数,总是偶数。 |
68 |
2 |
调色板解释 |
1:彩色 2:灰度 |
70 |
2 |
视频屏幕大小X |
视频输出的水平像素数-1 |
72 |
2 |
视频屏幕大小Y |
视频输出的垂直像 |